Package: georgstage
Georg Stage vagtplanlæggerDette er et hjælpeprogram til vagtplanlægning ombord på Georg Stage (søvagter).
Matematikken bag programmet benytter lineær programming (LP) til at optimere vagterne,
således at alle opgaver varetages, samtidigt med at opgaverne fordeles mellem
gasterne så fair som muligt. Programmet er skrevet i Python 3.Minimum Python version: 3.7SeKanbanfor opgaver der p.t. er igang.InstallationMac OS X and WindowsInstallation med pip:pipinstallgeorgstage--no-cache-dirKør:python-mgeorgstageRaspberry PiInstallation af dependencies:sudoapt-getinstalllibatlas-base-dev
sudoapt-getinstallglpk-utils
sudopipinstallgeorgstage
sudopulptestLokal udviklingpython3-mvenvvenvsourcevenv/bin/activate
pipinstall-e'.[tests]'Kør tests:makelint
maketestStart program:makerun_local# orpython-mgeorgstagePublicer ny versionopdater versionsnummer i pyproject.tomlgit commit -am 'besked'git push[På GitHub] opret ny release med matchende versionsnummer (tag og navn), dog med 'v' prefix.Herefter offentliggøres ny version automatisk på PyPI via en Github Action.BrugervejledningSpørg KostasKode eksemplerHvis du kan kode Python, kan du bruge Georg Stages API via kode.Auto-udfyldning:fromgeorgstageimportGeorgStage,Opgave,Vagtimportpandasaspd# initialiser GeorgStage med kodevagter=[Vagt(dato='2021-05-01',vagt_tid=0,gast=1,opgave=Opgave.VAGTHAVENDE_ELEV),Vagt(dato='2021-05-01',vagt_tid=0,gast=2,opgave=Opgave.ORDONNANS),Vagt(dato='2021-05-01',vagt_tid=0,gast=3,opgave=Opgave.RORGAENGER),Vagt(dato='2021-05-01',vagt_tid=0,gast=4,opgave=Opgave.UDKIG)]gs=GeorgStage(vagter)# fyld et par uger ud automatiskfordtinpd.date_range(start='2021-05-01',end='2021-05-14',closed=None).date:print(dt)fill_result=gs.autofill(dt)iffill_result.status==1:gs[dt]=fill_result.vagter# Check antal dage:print(f'Antal dage ={len(gs)}')Load og save:# Create gs from other gsgs2=GeorgStage(gs.get_vagter())# Create gs from dataframegs3=GeorgStage.from_dataframe(gs.to_dataframe())# Save GeorgStage til filegs.to_dataframe().to_csv('vagter.csv',index=False)# Load GeorgStage fra file (CSV)df_vagter=pd.read_csv('vagter.csv')gs4=GeorgStage.from_dataframe(df_vagter)Diverse:# Eksporter som dataframe (Pandas)gs.to_dataframe()# Eksporter som liste af vagtergs.get_vagter()# Eksporter datoergs.get_datoer()Regler vedr. vagter på Georg StageRegler for søvagter, som gælder delvist for ankervagter:Elever er organiseret i 3 skifter (holod) med 20 gaster (elever) på hverSkifte 1: gaster 1-20Skifte 2: gaster 21-40Skifte 3: Gaster 41-60Gaster 61-63 er kokke elever og er altid i køkkenet.Vagterne er går igen i 6 perioder per dag, som fordeles på skifte 1-3, så hver
skifte får to perioder per dagKlokken 00 - 04Klokken 04 - 08Klokken 08 - 12Klokken 12 - 16Klokken 16 - 20Klokken 20 - 24Det skal være fair, så alle få alle poster cirka lige mange gangeDe faste vagter erDer er 1 kvartermester til hver skifteDer er 1 udkig til hver skifteDer er 1 rorgænger til hver skifteDer er 1 ordonnans til hver skifteDer er 1 vagthavende elev til hver skifteDe særlige vagter er:Der er 1 dækselev i kabys, kun 8-12 (morgenmad), 12-16 (frokost), 16-20 (aftensmad)Den vagthavende elev er den samme gast både morgen og aften, går på tur, dag for dag, også når skifterne får nye vagter.Pejlegast A fra dagen før, er pejlegast B dagen efter.pejlegaster findes kun på 16-20 vagtenDer er udvalgte gaster der udtages til håndværksmæssig uddannelse hver dag.Der findes også ankervagter, men det kører en smule anderledes.