Elterndienstplaner
Automatische Zuteilung von Elterndiensten im Kinderladen unter Berücksichtigung von Fairness und Präferenzen.
Verwendung
./elterndienstplaner.py <eingabe.csv> <eltern.csv> <ausgabe.csv> [<vorherige-ausgaben.csv>]
Parameter:
eingabe.csv: Benötigte Dienste und Eltern-Präferenzen für den Planungsmonateltern.csv: Dienstfaktoren der Eltern (Anzahl betreuter Kinder)ausgabe.csv: Hier wird die Zuteilung geschriebenvorherige-ausgaben.csv(optional): Historische Daten für Fairness über das Jahr
Dienste
- F - Frühstücksdienst (täglich, 1 Person)
- P - Putznotdienst (täglich, 1 Person)
- E - Essensausgabenotdienst (täglich, 1 Person)
- K - Kochen (ca. alle 2 Wochen, 1 Person)
- A - Elternabend (nach Bedarf, 2 Personen)
Die Planung erfolgt für einen Kalendermonat.
Eingabedateien
eingabe.csv
Informationen zu benötigten Diensten und Verfügbarkeit/Präferenzen der Eltern.
Format:
Datum,Wochentag,Dienste,Eltern1,Eltern2,...
2025-01-06,Montag,FPE,F+,x,...
2025-01-07,Dienstag,FPE,P-,F+P+,...
Spalten:
- Datum (ISO-Format: YYYY-MM-DD)
- Wochentag (zur Information)
- Benötigte Dienste (z.B. "FPE" für Frühstück, Putzen, Essen)
4-n. Für jeden Elternteil:
x= nicht verfügbarF+= Frühstücksdienst bevorzugtP-= Putznotdienst nur notfalls- Mehrere Präferenzen kombinierbar:
F+P-E+ - Leer = verfügbar, keine Präferenz
eltern.csv
Dienstfaktoren (= Anzahl betreuter Kinder) pro Elternteil und Zeitraum.
Format:
Eltern,Beginn,Ende,Faktor,Beginn,Ende,Faktor,...
Müller,2024-09-01,2025-07-31,2
Schmidt,2024-09-01,2024-12-31,1,2025-01-01,2025-07-31,0
Spalten:
- Elternname (Kind-Name zur Identifikation) 2-4. Zeitraum 1: Beginn, Ende, Dienstfaktor 5-7. Zeitraum 2: Beginn, Ende, Dienstfaktor (optional) ...
Hinweise:
- Bei überlappenden Zeiträumen gilt der letzte Eintrag
- Außerhalb definierter Zeiträume: Faktor = 0 (keine Dienstpflicht)
- Faktor = 0 bedeutet: Befreiung (z.B. durch Vorstandsamt)
vorherige-ausgaben.csv (optional)
Frühere Ausgaben des Programms zur Berechnung der Jahres-Fairness.
Format: Wie ausgabe.csv (siehe unten).
Verwendung:
- Zu Beginn des Kita-Jahres (September): Keine Datei nötig
- Ab Oktober: Vorherige Ausgaben anhängen für kumulative Fairness
- Im Jahresverlauf sammeln sich die Ausgaben an
Ausgabe
ausgabe.csv
Zugeteilte Dienste pro Tag.
Format:
Datum,Wochentag,Frühstücksdienst,Putznotdienst,Essensausgabenotdienst,Kochen,Elternabend
2025-01-06,Montag,Müller,Schmidt,Weber,,
2025-01-07,Dienstag,Weber,Müller,Schmidt,,
Constraints
Harte Constraints (müssen erfüllt sein)
- C1: Pro Eltern und Dienst maximal einmal pro Woche (Mo-So)
- C2: Pro Eltern maximal ein Dienst pro Tag
- C3: Nur verfügbare Eltern einteilen
- C4: Alle benötigten Dienste müssen besetzt werden
Weiche Constraints (werden optimiert)
Fairness (nach Priorität):
-
F1 (Global): Dienste proportional zum Dienstfaktor über das ganze Jahr
- Berücksichtigt historische Dienste aus
vorherige-ausgaben.csv - Gewichtung: 40% (zu Jahresbeginn) → 60% (zu Jahresende)
- Berücksichtigt historische Dienste aus
-
F2 (Lokal): Dienste proportional zum Dienstfaktor im aktuellen Monat
- Nur aktueller Planungszeitraum
- Gewichtung: 60% (zu Jahresbeginn) → 40% (zu Jahresende)
-
F3 (Dienstübergreifend): Gleiche Gesamtanzahl über alle Diensttypen
- Verhindert Häufung bei einzelnen Eltern
Präferenzen (niedrigere Priorität):
- P1: Bevorzugte Dienste (
+) werden bevorzugt zugeteilt - P2: Abgelehnte Dienste (
-) werden vermieden
Fairness-Logik
Beispiel: Familie Müller hat 2 Kinder, Familie Schmidt 1 Kind.
Lokale Fairness (F2):
- Im Januar sollen beide verfügbar sein
- Müller sollte 2× so viele Dienste bekommen wie Schmidt
- Verhindert: Müller bekommt alle Dienste auf einmal
Globale Fairness (F1):
- Müller war im Dezember im Urlaub → 0 Dienste
- Im Januar sollte Müller aufholen
- Über das Jahr: 2:1 Verhältnis wird ausgeglichen
Gewichtung im Jahresverlauf:
- September-November: F2 (lokal) stärker → sanftes Einführen
- Dezember-Mai: Ausgewogen
- Juni-Juli: F1 (global) stärker → Jahresausgleich
Ausgabe-Statistiken
Das Programm zeigt nach der Optimierung:
- Dienste pro Eltern: Übersicht der zugeteilten Dienste
- Dienstfaktoren: Summe im Planungszeitraum
- Verteilungsvergleich: Soll (lokal/global) vs. Ist mit Abweichungen
- Präferenz-Verletzungen: Wie oft wurden Ablehnungen ignoriert
Troubleshooting
"Keine optimale Lösung gefunden":
- Zu viele Eltern nicht verfügbar
- Nicht genug Eltern für alle Dienste
- Widersprüchliche Präferenzen
"Unfaire Verteilung":
- Prüfen Sie die Dienstfaktoren in
eltern.csv - Stellen Sie sicher, dass
vorherige-ausgaben.csvkorrekt ist - Mehr Eltern verfügbar machen