Stundenplan fortgeschritten — Profi-Features
Diese Anleitung ist die Fortsetzung von „Stundenplan — Schritt für Schritt". Sie zeigt, wie Du die Steuerungs-Werkzeuge nutzt, die Untis und aSc auch haben — aber in Prilog mit klareren Eingabe-Wegen.
Wir gehen die Reihe nach durch:
- Klassen-Vorlage — das visuelle Wochenraster pro Klasse, das alles speist
- Cell-Fixierung — einzelne Stunden festnageln, der Solver muss drumherum bauen
- A/B-Wochen — Stunden, die nur alle zwei Wochen laufen
- Klassenübergreifende Kopplungen — Religion ev/kath parallel, Sport-Band Mittelstufe
- Klassen-Regelwerk — pädagogische Regeln („Mathe nicht nach Sport", „Mittwoch nach 4. Stunde frei")
- Lehrer-Verfügbarkeitsmatrix — Teilzeit-Frei-Tage, Hard-Sperren
- Lehrer-Deputat als Cap — vertragliche Wochenstunden, der Solver hält sich daran
- Lehrer-Präferenzen — Lieblings-Raum + Wunsch-Stufen
Alle Features sind additiv — wenn Du nichts einträgst, läuft der Solver wie bisher. Erst wenn Du einen Wert setzt, greift der Constraint.
1. Klassen-Vorlage — das Herzstück
Stammdaten → Klassen-Vorlage.
Was Du siehst: pro Klasse ein 5-Tage-Wochenraster (Mo–Fr × N Slots). Jedes Kästchen ist eine Cell — ein einzelner Slot wie „Mo, 1. Stunde 8:00–8:45 in Klasse 3a".
Klick auf eine Cell öffnet den Editor (Dialog rechts). Dort wählst Du:
| Feld | Bedeutung |
|---|---|
| Teilung | Ganze Klasse / Halbiert (2 Fächer parallel) / Gedrittelt |
| Fach | Was läuft hier |
| HG-B / 3. Drittel | Partner-Fach bei Halbierung / Drittelung |
| Doppel-/Mehrfachstunde | 1 = Einzelstunde, 2 = Doppelstunde (90 Min), 3 = Dreierstunde |
| Doppelstunde bevorzugen | Soft-Wunsch: zwei Cells desselben Fachs in benachbarten Slots |
| Kopplungs-Schlüssel | Optional — siehe Abschnitt 4 |
| Rhythmus | Jede Woche / Nur A-Wochen / Nur B-Wochen — siehe Abschnitt 3 |
| Fixierung für den Solver | Vorschlag / Tag+Slot fix / Alles fix — siehe Abschnitt 2 |
Warum das Board?
Früher hat man die Stundentafel als Tabelle eingegeben („5a: 5h Mathe, 4h Deutsch, ..."). Jetzt zeichnest Du direkt das Wochenraster. Daraus rechnet Prilog automatisch die Stundentafel-Werte — das ist die Single-Source-of-Truth.
Vorteil: Du siehst sofort, wann eine Stunde steht. Bei Halbierungen (Eurythmie parallel zu Sprache) ist das visuell viel klarer als in einer Tabelle.
Unter dem Wochenraster zeigt eine Aufschlüsselung pro Fach:
- Schüler-h: wie viele Stunden ein Schüler pro Woche bekommt
- Lehrer-h: wie viele Stunden der Lehrer arbeitet (bei Rotation × 2 oder × 3)
- Klassen-Slots: wie viele Slots der Klassenraum belegt
Bei Halbgruppen-Rotation sind die drei Werte verschieden — Beispiel Sport 3h half_rotation: Schüler-h=3, Lehrer-h=6, Klassen-Slots=3.
2. Cell-Fixierung — Lock-Level
Dasselbe Cell-Editor-Fenster hat ein 3-Stufen-Toggle „Fixierung für den Solver":
| Stufe | Symbol | Was es bedeutet |
|---|---|---|
| Vorschlag | (kein Icon) | Solver darf die Stunde umlegen, wenn andere Constraints es verlangen |
| 📌 Tag+Slot | 📌 in der Cell | Tag und Slot sind fest. Lehrer und Raum darf der Solver wählen. |
| 🔒 Alles fix | 🔒 in der Cell | Tag, Slot, Lehrer (aus Voraus-Zuweisung) und Raum (Stammraum) sind fest |
Wann was nehmen?
- Vorschlag (Default) — wenn Du nicht sicher bist, der Solver soll's optimieren.
- 📌 Tag+Slot — wenn Du weißt „Hauptunterricht IMMER Mo+Di 1./2.", aber Lehrer kann variieren.
- 🔒 Alles fix — wenn Du weißt „Frau Müllers Klassenstunde Mo-1 in Raum 12, fertig".
Bei 🔒 Alles fix werden Lehrer und Raum automatisch übernommen aus:
- Lehrer:
ClassSubjectAssignmentmitimportance=100(siehe „Voraus-Zuweisungen") - Raum:
ClassStammRoom(Klassen-Stammraum) — außer das Fach hat eigene Raum-Constraints
Schritt-für-Schritt-Fixieren
Eine bewährte Vorgehensweise:
- Erst leeres Board.
- Hauptunterricht-Block (1./2. Std., alle Tage) mit
🔒 Alles fixsetzen — der Klassenlehrer ist Pflicht. - Sport und Fachräume mit
📌 Tag+Slotmarkieren (Sporthalle ist begehrt). - Rest mit
Vorschlag. - Auto-Plan starten — der Solver baut um die Festen herum.
3. A/B-Wochen — alternierende Stunden
Im Cell-Editor das Rhythmus-Toggle:
| Wert | Symbol | Bedeutung |
|---|---|---|
| Jede Woche | (kein Badge) | Standard — Stunde läuft wöchentlich |
| Nur A-Wochen | 🟦 A Badge | Stunde nur in geraden Wochen |
| Nur B-Wochen | 🟪 B Badge | Stunde nur in ungeraden Wochen |
Wichtig: A-Stunden und B-Stunden konfligieren NICHT im selben Slot — sie laufen ja nie gleichzeitig.
Klassisches Beispiel — Religion ev/kath:
In 5a anlegen:
- Mi, 4. Stunde, Religion ev., Rhythmus = A → blauer A-Badge
- Mi, 4. Stunde, Religion kath., Rhythmus = B → violetter B-Badge
(Geht das überhaupt — zwei Cells im selben Slot? Ja: A und B sind getrennt. Du kannst nicht zwei A-Cells in denselben Slot legen, aber A und B ist OK.)
Für die Lehrer-Sicht: Frau Müller (kath.) hat Mi 4. nur jede zweite Woche Religion. Pro Plan-Slot zählt sie aber einen kompletten Slot — auch in der A-Woche ist der Slot „belegt" mit Religion ev. (anderer Lehrer).
14-tägige Stunden modellieren:
Eurythmie nur in A-Wochen → 1h Schüler-h pro 2 Wochen = 0.5 Schüler-h pro Woche, im System aber als 1 Plan-Slot pro Woche modelliert (in A). Das ist mathematisch sauber.
4. Klassenübergreifende Kopplungen
Im Cell-Editor das Feld „Kopplungs-Schlüssel" (Text, optional).
Was es macht: alle Cells in verschiedenen Klassen mit demselben Schlüssel laufen im Solver auf demselben Slot.
Use-Cases:
Religion ev/kath klassenübergreifend (alle 5er-Klassen parallel)
- 5a Mi 4: Religion ev., Schlüssel =
rel-5er - 5b Mi 4: Religion kath., Schlüssel =
rel-5er - 5c Mi 4: Religion ev., Schlüssel =
rel-5er→ Solver muss alle drei im gleichen Slot platzieren.
- 5a Mi 4: Religion ev., Schlüssel =
Sport-Band Mittelstufe (alle 7er gleichzeitig Sport)
- 7a Di 5: Sport, Schlüssel =
sport-7er-band - 7b Di 5: Sport, Schlüssel =
sport-7er-band - 7c Di 5: Sport, Schlüssel =
sport-7er-band→ Die drei Klassen haben Sport zur gleichen Zeit, brauchen aber 3 Sporthallen.
- 7a Di 5: Sport, Schlüssel =
Wahlpflichtfach-Kursbänder — wenn Schüler aus verschiedenen Klassen denselben Kurs besuchen, alle Kurse des Bands laufen gleichzeitig.
Konvention für Kopplungs-Schlüssel
Wähle sprechende Namen: rel-5er, sport-7er-band, franz-9, wpf-8-block-1. Der Schlüssel ist nur ein interner Marker — er erscheint nicht im veröffentlichten Plan.
In der Cell wird ein 🔗-Badge angezeigt, sobald ein Schlüssel gesetzt ist.
Erlaubt:
- Lehrer pro Coupling-Cell unterschiedlich (Frau Müller ev., Herr Schmidt kath.)
- Räume pro Coupling-Cell unterschiedlich (verschiedene Klassenzimmer)
Nicht erlaubt:
- Coupling-Cells in derselben Klasse (macht keinen Sinn — Klasse kann nicht parallel zu sich selbst)
5. Klassen-Regelwerk
Stammdaten → Klassen-Regelwerk (Tab mit ⚖️-Icon).
Was es ist: pädagogische Regeln, die der Solver als Hard-Constraint beachtet. Zwei Ebenen:
- Tenant-Default — gilt für alle Klassen der Schule
- Klassen-Override — eine Klasse hat eine eigene Regel, ersetzt den Tenant-Default
Oben der Scope-Switcher: „Tenant-Default (alle Klassen)" oder einzelne Klasse.
Fünf Regeltypen verfügbar:
5.1 Fach in Zeitfenster
„Hauptunterricht darf nur in der 1. oder 2. Stunde stattfinden."
Klick „+ Neue Regel" → Typ Fach in Zeitfenster → Fach + Von-/Bis-Slot wählen.
5.2 Fach-Reihenfolge-Verbot
„Mathe darf NICHT direkt nach Sport stattfinden."
Typ Fach-Reihenfolge-Verbot → Erstes Fach „Sport", Zweites Fach „Mathe". Solver verbietet, dass Sport direkt vor Mathe im selben Tag liegt.
5.3 Mindestabstand zwischen Stunden
„Hauptfächer (Mathe, Deutsch) brauchen mindestens 2 Slots Pause innerhalb eines Tages."
Typ Mindestabstand zwischen Stunden → Fach + N Slots Abstand. Pro Fach eine Regel.
5.4 Tagesfreistellung
„Mittwoch nach der 4. Stunde frei."
Typ Tagesfreistellung → Wochentag + nach welchem Slot frei.
Tenant-Default
Pflegen oft: Mittwoch-Nachmittag frei für ganze Schule → Tenant-Default. Einzelne Klasse hat Praktikum am Mi-Nachmittag → klassen-spezifischer Override für diese Klasse mit anderen Werten.
5.5 Max-Anzahl pro Tag
„Mathe darf max. 2× pro Tag in einer Klasse stattfinden."
Typ Max. Stunden pro Tag → Fach + Max-Wert.
6. Lehrer-Verfügbarkeitsmatrix
Stammdaten → Personal → Lehrer auswählen → Sub-Panel „Verfügbarkeitsmatrix".
Was Du siehst: ein 5-Tage × N-Slots-Grid:
- Grüne ✓-Buttons = verfügbar (Default)
- Rote ✕-Buttons = gesperrt
Klick toggelt — Änderungen werden gesammelt; Speichern-Knopf erscheint nach erster Änderung.
Bulk-Aktionen:
- Unter jeder Spalte ein „sperren/frei"-Link → ganzer Tag aufs Mal
- Oben rechts „Alle freigeben" → reset
- Counter oben: „X von Y Slots gesperrt"
Use-Cases:
- Teilzeit-Frau-Müller: Mo + Mi komplett gesperrt → Solver platziert sie nur Di/Do/Fr
- Externer Lehrer: nur Di 1.–4. verfügbar → alle anderen Slots gesperrt
- Vorm./Nachm.-Lehrer: nur Vormittag → Slots 5–8 gesperrt
Hard-Sperre
Verfügbarkeitsmatrix ist Hard: der Solver platziert den Lehrer nie in einen gesperrten Slot, auch nicht bei knapper Lösung. Wenn das zu UNSAT führt, meldet die Solver-Diagnose: „Lehrer X: Cap Y h/Woche, aber nur Z Slots nach Sperren verfügbar." Dann musst Du Sperren reduzieren oder Cap nachjustieren.
Storage-Logik: Nur Sperreintraege werden in der DB gespeichert. Vollzeit-Lehrer ohne Sperren haben keine Einträge — spart Performance bei 5000+-Schüler-Schulen.
7. Lehrer-Deputat als Cap
Stammdaten → Personal → Lehrer → Sub-Panel „Deputat" (hinter Compliance-Gate).
Was Du einträgst:
- Vertragliche Wochenstunden (z.B. 27,5)
- FTE-Prozent (100 = Vollzeit, 50 = Halbzeit, …)
- Ermäßigungs-Stunden (Funktion, Mentoring, Leitung; nicht-gesundheitsbezogen)
- Gültigkeit (validFrom / validUntil für Halbjahres-Wechsel)
Effektiver Solver-Cap = contractedHoursWeek − reductionHoursWeek (gerundet auf ganze Stunden).
Wirkung: Hard. Der Solver platziert den Lehrer nie mit mehr als diesem Wochenstundenwert.
Bei UNSAT-Diagnose:
Wenn der Cap zu eng gewählt ist, kann der Solver keine Lösung finden. Diagnose-Text im Solver-Log:
„Fach Mathe: 20h Bedarf, qualifizierte Lehrer mit Cap-Summe 10h: Frau A (5h), Herr B (5h). Deputat erhöhen oder Quali ergänzen."
Damit weißt Du sofort: entweder Cap-Werte hochziehen, oder mehr Lehrer für Mathe qualifizieren.
Compliance
Das Deputat-Sub-Panel ist hinter einem DSGVO-Gate (Beschäftigtendatenverarbeitung, Art. 88 DSGVO). Der DSB muss freigeschaltet haben. Solange das Gate aus ist, ist das Sub-Panel sichtbar aber editier-gesperrt.
8. Lehrer-Präferenzen — Lieblings-Raum + Wunsch-Stufen
Stammdaten → Personal → Lehrer → Sub-Panel „Präferenzen".
Zwei Felder:
- Bevorzugte Klassenstufen — Mehrfach-Auswahl aus „Unterstufe / Mittelstufe / Oberstufe"
- Lieblings-Raum — Dropdown aus den vorhandenen Räumen
Wirkung: Soft. Der Solver versucht, den Lehrer in seinen Wunsch-Stufen und seinem Wunsch-Raum zu platzieren — aber wenn andere Constraints es nicht zulassen, weicht er aus.
Score-Buckets im Solver-Output:
pref_grade_mismatch— Lehrer arbeitet außerhalb der Wunsch-Stufenpreferred_room_mismatch— Lehrer NICHT im Wunsch-Raum (wo Pref-Raum für Fach erlaubt)
Niedrig = gut.
Zusammenspiel — die Reihenfolge in der Praxis
Empfohlene Vorgehensweise wenn Du eine neue Schule einrichtest:
- Stammdaten (Räume, Fächer, Zeitraster, Klassen, Lehrer)
- Lehrer-Qualifikationen + Deputat + Verfügbarkeitsmatrix
- Klassen-Vorlage für eine Klasse vollständig ausfüllen
- Cells mit Lock-Level markieren, Couplings setzen, Rhythmus pflegen
- Klassen-Regelwerk als Tenant-Default
- Klassen-Vorlage für weitere Klassen — copy/paste der Standard-Wochenstruktur
- Bereitschafts-Check — bis grün
- Auto-Plan starten
- Score lesen, Lehrer-Präferenzen nachschärfen
- Veröffentlichen
Verwandt
- „Stundenplan — Schritt für Schritt" — Grund-Workflow
- „Solver verstehen & UNSAT lösen" — wenn der Plan nicht aufgeht
- Referenz: Alle Solver-Inputs (technische Spec)