Skip to content

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:

  1. Klassen-Vorlage — das visuelle Wochenraster pro Klasse, das alles speist
  2. Cell-Fixierung — einzelne Stunden festnageln, der Solver muss drumherum bauen
  3. A/B-Wochen — Stunden, die nur alle zwei Wochen laufen
  4. Klassenübergreifende Kopplungen — Religion ev/kath parallel, Sport-Band Mittelstufe
  5. Klassen-Regelwerk — pädagogische Regeln („Mathe nicht nach Sport", „Mittwoch nach 4. Stunde frei")
  6. Lehrer-Verfügbarkeitsmatrix — Teilzeit-Frei-Tage, Hard-Sperren
  7. Lehrer-Deputat als Cap — vertragliche Wochenstunden, der Solver hält sich daran
  8. 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:

FeldBedeutung
TeilungGanze Klasse / Halbiert (2 Fächer parallel) / Gedrittelt
FachWas läuft hier
HG-B / 3. DrittelPartner-Fach bei Halbierung / Drittelung
Doppel-/Mehrfachstunde1 = Einzelstunde, 2 = Doppelstunde (90 Min), 3 = Dreierstunde
Doppelstunde bevorzugenSoft-Wunsch: zwei Cells desselben Fachs in benachbarten Slots
Kopplungs-SchlüsselOptional — siehe Abschnitt 4
RhythmusJede Woche / Nur A-Wochen / Nur B-Wochen — siehe Abschnitt 3
Fixierung für den SolverVorschlag / 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":

StufeSymbolWas es bedeutet
Vorschlag(kein Icon)Solver darf die Stunde umlegen, wenn andere Constraints es verlangen
📌 Tag+Slot📌 in der CellTag und Slot sind fest. Lehrer und Raum darf der Solver wählen.
🔒 Alles fix🔒 in der CellTag, 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: ClassSubjectAssignment mit importance=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:

  1. Erst leeres Board.
  2. Hauptunterricht-Block (1./2. Std., alle Tage) mit 🔒 Alles fix setzen — der Klassenlehrer ist Pflicht.
  3. Sport und Fachräume mit 📌 Tag+Slot markieren (Sporthalle ist begehrt).
  4. Rest mit Vorschlag.
  5. Auto-Plan starten — der Solver baut um die Festen herum.

3. A/B-Wochen — alternierende Stunden

Im Cell-Editor das Rhythmus-Toggle:

WertSymbolBedeutung
Jede Woche(kein Badge)Standard — Stunde läuft wöchentlich
Nur A-Wochen🟦 A BadgeStunde nur in geraden Wochen
Nur B-Wochen🟪 B BadgeStunde 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:

  1. 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.
  2. 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.
  3. 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-Stufen
  • preferred_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:

  1. Stammdaten (Räume, Fächer, Zeitraster, Klassen, Lehrer)
  2. Lehrer-Qualifikationen + Deputat + Verfügbarkeitsmatrix
  3. Klassen-Vorlage für eine Klasse vollständig ausfüllen
  4. Cells mit Lock-Level markieren, Couplings setzen, Rhythmus pflegen
  5. Klassen-Regelwerk als Tenant-Default
  6. Klassen-Vorlage für weitere Klassen — copy/paste der Standard-Wochenstruktur
  7. Bereitschafts-Check — bis grün
  8. Auto-Plan starten
  9. Score lesen, Lehrer-Präferenzen nachschärfen
  10. Veröffentlichen

Verwandt