96 lines
3.7 KiB
Markdown
96 lines
3.7 KiB
Markdown
Elterndienstplaner
|
|
|
|
syntax: ./elterndienstplaner.py <eingabe.csv> <eltern.csv> <ausgabe.csv> { <vorherige-ausgaben.csv> }
|
|
|
|
Der Elterndienstplaner hilft bei der Zuteilung von Elterndiensten zu Eltern.
|
|
Zur Identifizierung der Eltern dient der Name des Kindes/der Kinder.
|
|
|
|
Es gibt diese Dienste:
|
|
- F: Frühstücksdienst (täglich)
|
|
- P: Putznotdienst (täglich)
|
|
- E: Essensausgabenotdienst (täglich)
|
|
- K: Kochen (alle 2 wochen, Datum manuell festgelegt)
|
|
- A: Elternabend (2 Eltern, Datum manuell festgelegt)
|
|
|
|
Die Planung erfolgt immer für einen Kalendermonat.
|
|
|
|
Die Eltern geben an, an welchen Tagen sie abwesend sind, also nicht zur Verfügung stehen. Zudem können sie für jede Tag-Dienst-Kombination angeben, ob sie den Dienst an diesen Tag bevorzugt (+) oder nur notfalls (-) machen wollen.
|
|
|
|
Die Eingabe erfolgt über eine CSV-Datei eingabe.csv und eltern.csv
|
|
|
|
## eingabe.csv
|
|
Informationen zu notwendigen Diensten eines Monats und Zeiten/Praeferenzen der Eltern
|
|
|
|
1. Spalte: Datum in ISO-Format
|
|
2. Spalte: Wochentag (Hilfsinformation)
|
|
3. Spalte: Benötigte Dienste als aneinandergereihte Dienstkürzel
|
|
Folgende Spalten: Für alle Eltern: Verfügbarkeit und Präferenz:
|
|
- x, falls nicht verfügbar
|
|
- <Dienstkürzel>+, wenn Dienst an dem Tag bevorzugt.
|
|
- <Dienstkürzel>-, wenn Dienst an dem Tag abgelehnt.
|
|
Es können mehrere Präferenzen pro Tag angegeben werden.
|
|
1. Zeile header
|
|
folgende Zeilen je Tag.
|
|
|
|
|
|
## eltern.csv:
|
|
Informationen zur Diestpflicht der Eltern.
|
|
Die Dienstpflicht besteht, wenn Eltern Kinder im Kinderladen betreuen lassen.
|
|
Der Dienstfaktor entspricht der Anzahl der betreuten Kinder der Eltern.
|
|
Wenn Eltern ein Vorsandsamt im Kinderladen übernehmen, werden sie von der Dienstpflicht befreit.
|
|
|
|
1. Spalte Zeitraum Beginn
|
|
2. Spalte Zeitraum Ende
|
|
3. Spalte Dienstfaktor
|
|
4. Spalte ... nächster Zeitraum
|
|
1. Zeile Header
|
|
folgende Zeilen Eltern
|
|
|
|
|
|
Bei sich überschneidenden Zeiträumen gilt der letzte Eintrag.
|
|
An Tagen außerhalb der angegebenen Zeiträume ist der Dienstfaktor 0.
|
|
|
|
Die Datei eltern.csv enthält ggf. mehr Eltern als die Eingabe.csv,
|
|
da Kinder dazukommen oder den KiLa verlassen, die eltern.csv aber nur anwächst.
|
|
|
|
## ausgabe.csv
|
|
1. Spalte: Datum
|
|
2. Spalte: Wochentag
|
|
3. Spalte ... Dienste
|
|
Zeilen: für jeden Tag die zugeteilten Eltern in den jeweiligen Dienstspalten
|
|
|
|
## vorherige-ausgaben.csv
|
|
Hier werden die von früheren Läufen des Programms generierten ausgabe.csv-Datein wiedereingespielt.
|
|
Das Format entspricht der ausgabe.csv
|
|
|
|
## Constraints
|
|
|
|
Harte Constraints:
|
|
C1: Je Eltern und Dienst, Dienst nur einmal die Woche
|
|
C2: Je Eltern nur einen Dienst am Tag
|
|
C3: Dienste nur verfügbaren Eltern zuteilen
|
|
|
|
Weiche Constraints:
|
|
- F1: Alle Eltern erhalten Dienste im Verhältnis ihres Dienstfaktors (Gesamter vorliegender Zeitraum)
|
|
- F2: Alle Eltern erhalten Dienste im Verhältnis ihres aktuellen Dienstfaktors (Aktueller Monat)
|
|
- P1: Eltern erhalten bevorzugte Dienste
|
|
- P2: Eltern erhalten keine abgelehnten Dienste.
|
|
|
|
F1 und F2 sind Fairnessconstraints und gelten pro Dienst.
|
|
P1 und P2 sind Präferenzconstraints. Sie wiegen schwächer als die Fairnessconstaints.
|
|
|
|
|
|
Die vorherige-ausgaben.csv der vergangenen Monate dienen auch als Eingabe.
|
|
Sie werden für die Fairnessconstraints verwendet.
|
|
Im Laufe eines Kinderladenjahrs sammeln sich die Ausgaben der Monate an.
|
|
F2 stellt die Fairness im aktuellen Monat sicher -> lokale Fairness
|
|
F1 stellt die Fairness für das gesamte Jahr sicher -> globale Fairness
|
|
|
|
Wenn z.B. Eltern eine zeitlang nicht verfügbar sind, sollen sie nicht sofort
|
|
alle Dienste "nachholen" müssen (lokale Fairness stellt das sicher),
|
|
aber im Jahresverlauf die Dienste trotzdem nachholen (globale Fairness stellt das sicher).
|
|
|
|
F1 und F2 werden mit Faktoren gewichtet. Zu Beginn des Kinderladenjahrs ist F2 stärker,
|
|
zum Ende des Kinderladenjahres F1.
|
|
|