Stundenplan-Erstellung
[Home][Software][Evolution]

Stundenplan-Erstellung mit evolutionären Algorithmen

Einleitung

Szenarien
Stammdaten-Verwaltung
Nebenbedingungen
Automatische Plan-Erstellung
Manuelle Plan-Erstellung

Schul-Typen
Vertretungsplan
Ausgabe
Entwicklung
Downloads und Screen-Shot

In vielen Bereichen des täglichen Lebens steht der Mensch vor der Aufgabe, mit möglichst geringem Aufwand möglichst hohen Nutzen zu erzielen. Er wird also mit Problemen konfrontiert, für die er die bestmöglichen Lösungen sucht. Als besonders schwierig stellt sich immer wieder die kostengünstigste Verteilung von Ressourcen im Bereich Organisation und Planung heraus. Ein spezielles Problem aus diesem Bereich ist das Stundenplan-Problem oder das timetabling, welches die zeitliche Anordnung einer Menge von Aktivitäten und Ressourcen unter bestimmten Nebenbedingungen umfaßt.

Viele Bildungseinrichtungen beschäftigen Jahr für Jahr eine Anzahl von Lehrkräften mit der Erstellung von Stundenplänen. Die dabei erzielten Ergebnisse kommen zumeist unter beträchtlichem Zeitaufwand zu stande und entsprechen selten den Vorstellungen der Betroffenen. Zur Auflösung dieses Mißverhältnisses können spezielle Optimierungs-Programme einen wertvollen Beitrag leisten.

Die hier dargestellte Software ist zwar im Rahmen einer umfangreichen Studien-Arbeit entstanden. (Dort ist auch nachzulesen, was das alles mit evolutionärer Programmierung zu tun hat.) Ein hohes Maß an Praxis-Tauglichkeit war jedoch trotzdem ein wichtiger Bestandteil der Zielstellung.

Szenarien

Grau ist alle Theorie. Im folgenden werden daher einige reale Szenarien von Unterrichts-Formen und -Situationen dargestellt, die durch das Beschreibungs-Modell der Software erfaßt werden.

1. Lehrer Leibnitz gibt pro Woche drei Stunden Unterricht in Mathematik bei der Klasse 10b. Keine der Stunden darf am selben Tag stattfinden.
2. Lehrer Goethe gibt pro Woche drei Stunden Unterricht in Deutsch bei der Klasse 10b. Eine dieser Stunden findet Dienstags in der ersten Stunde im Raum 001 statt.
3. Lehrer Einstein unterrichtet die Klasse 10b in Physik. Von den drei Stunden pro Woche, die alle im Physikraum stattfinden müssen, folgen zwei direkt aufeinander.
4. Aufgrund der niedrigen Klassenstärken werden die Klassen 2a und 2b für den Werken-Unterricht bei einem Lehrer zusammengelegt. Dieser Lehrer steht nur Dienstags bis Freitags zur Verfügung.
5. Ab der 7. Klasse müssen alle Schüler eine weitere Fremdsprache wählen. Es wird Einführungs-Unterricht in Spanisch, Französisch und Suaheli angeboten. In einer Stunde pro Woche teilen sich die drei 7. Klassen entsprechend der Wahl der einzelnen Schüler auf die drei Sprach-Stunden auf. Die drei Stunden finden alle zur selben Zeit und in den Räumen 001, 002 und 003 statt.
6. In den Sportstunden der Klasse 10a wird eine Aufteilung in Jungen und Mädchen vorgenommen. Je ein Sportlehrer ist für einen Teil verantwortlich. Der Unterricht findet in der Sporthalle statt. Die Klasse 7a hingegen hat ihren Sportunterricht nur bei einem Lehrer in der selben Sporthalle.
7. Wenn es das Fach zuläßt, finden alle Stunden der Klasse 8a in einem bestimmten Raum statt - dem Klassenraum.
8. Für alle Klassen soll realisiert werden, daß die Schule Montags und Freitags möglichst früh zu Ende ist.
9. Die Schulleitung weist jedem Lehrer eine Bereitschaftsstunde zu, so daß stets, wenn möglich, ein Lehrer zur Verfügung steht.
10. Die Musikstunden, die Lehrer Mozart bei der Klasse 6a gibt, dürfen frühestens in der 5. Stunde stattfinden - eine davon unbedingt am Montag.
11. Lehrer und Klassen haben so wenig Freistunden wie möglich.
12. Die Stunden einer jeden Klasse sind möglichst gleichmäßig auf die Unterrichtstage verteilt. Gleiches gilt für Lehrer.
13. Die 8. Klassen sollten möglichst nicht Physik und Chemie an einem Tag haben.
14. Die 8. bis 10. Klassen haben stets bei zwei Sport-Lehrern Unterricht (Jungs und Mädchen getrennt), während alle jüngeren Klassenstufen bei nur einem Lehrer haben. In letzterem Fall wird die Turnhalle geteilt und zwei Klassen haben gleichzeitig Sport.

Stammdaten-Verwaltung

    • Fächer, Lehrer, Klassen - wie üblich
    • Räume: Reservierung für bestimmte Fächer und Definition von Klassenräumen ist möglich
    • Kurse werden unterstützt (!)
    • Es sind maximal 12 Stunden + optional eine Nullte Stunde pro Tag verfügbar.
    • Maximal 7 Tage pro Woche können gewählt werden.
      (Aber wer brauch schon mehr als 5 ?)

Folgende Nebenbedingungen lassen sich festlegen

    • Zeit-Restriktionen
      Für jeden Lehrer, jede Klasse und jeden Raum können beliebige Zeiten reserviert bzw. gesperrt werden.
    • Raum-Pre-Sheduling
      Unterrichts-Stunden können auf bestimmte Räume festgelegt werden - speziell wird die Definition von Klassenräumen unterstützt.
    • Zeit-Pre-Sheduling
      Unterrichts-Stunden können auf bestimmte Zeiten festgelegt werden. Möglich ist die Vorgabe einer exakten Zeit (also Tag + Stunde) oder eines Zeit-Bereiches.
    • Mehrfach-Stunden
      ...
      werden unterstützt (Doppelstunde, Dreifachstunde, ...)
    • Fach-Restriktionen
      Fach-gleiche Stunden oder bestimmte Fächer-Kombinationen einer Klasse können auf verschiedene Tage der Woche verteilen werden.

Automatische Plan-Erstellung und Optimierungs-Ziele

    • Einhaltung/ Beachtung aller definierten Nebenbedingungen
    • Freistunden
      ... sind zeitlich zusammenhängende unbelegte Unterrichts-Zeiten eines Tages, die von belegten Stunden eingeschlossen sind - häufig das schwierigste Problem bei der Plan-Erstellung. Das Programm nimmt eine automatische Minimierung der Freistunden für Klassen und Lehrer vor.
    • Stundenverteilung
      Sowohl für Klassen, als auch für Lehrer, wird eine homogene Verteilung der Stunden einer Woche auf die einzelnen Tage angestrebt.
    • Trennungs-Fehler
      ... ergeben sich, wenn Fach-Restriktionen (siehe Nebenbedingungen) nicht eingehalten werden können. Das Programm minimiert Trennungs-Fehler.
    • Die Entscheidung, welche der Optimierung-Ziele verfolgt werden, kann durch den Nutzer selbst bestimmt werden. Standardmäßig bietet das Programm jedoch einen "Schritt-für-Schritt-Ablauf" an, der sich in der Praxis bewährt hat.

Mauelle Planerstellung

    • Die Software stellt ein komfortables Modul zur Verfügung, welches die manuelle Veränderung eines Planes ermöglicht (siehe ScreenShot).
    • Soll eine Stunde an eine andere Zeit verschoben werden, werden automatisch alle möglichen Austausch-Stunden angeboten.
    • Für eine Freistunde lassen sich automatisch alle in Frage kommenden Stunden ermitteln.
    • Per Maus lassen sich Stunden in dem Plan verschieben. Ist eine solche Verschiebung nicht möglich, wird die Ursache des Konfliktes angegeben - etwa, wenn der Raum bereits belegt ist, wenn der an der zu verschiebenden Stunde beteiligte Lehrer zum betreffenden Zeitpunkt bereits bei einer anderen Klasse unterrichtet u.s.w. ...
    • Die meisten Nebenbedingungen können manuell geändert werden. Wurde für eine Problem-Stunde manuell eine gute Lösung gefunden, läßt sie sich z.B. fest im Plan verankern (Zeit-Restriktion) und kann durch folgende automatische Optimierungen nicht mehr verschoben werden.
    • Es ist dem Nutzer freigestellt, zwischen automatischer und manueller Plan-Erstellung zu wechseln. Die automatische Optimierung kann durch eine manuelle Phase unterbrochen und anschließend wieder gestartet werden.

Vertretungsplan

    Das Programm bietet für jede potentielle Ausfall-Stunde Informationen für geeignete Vertetungen an und erzeugt einen Vertretungs-Plan.

Ausgabe

    • Die Ausgabe erfolgt per OLE-Automation nach MS Word.
    • Es können (alle oder ausgewählte) Stundenpläne für Lehrer und Klassen bzw. Belegungs-Pläne für Räume und Vertretungs-Pläne ausgegeben werden.
    • Die Ausgabe erfolgt stets in Tabellenform.

Unterstützte Schul -bzw. Unterrichts-Typen

    Unterstützt wird Unterricht im Klassenverband und die Definition von Kursen.

    Für Schulen, die ein komplettes Kurs-System fahren, ist die Software also i. allg. nicht geeignet.

 

Entwicklungs-Informationen

Für die Entwicklung der Software wurde der C++ Builder 3.0 von Borland verwendet.
Der Entwicklungs-Zeitraum belief sich auf ungefähr 6 Monate.

Die Software umfaßt ca. 19 000 Zeilen Quellcode.

An dieser Stelle möchte ich einige Danksagungen loswerden.
Danke, für

  • die Bereitstellung des Entwicklungssystems durch die Firma CODie Software Products
  • viel Geduld und wertvolle Ratschläge von Herr Dr. Staubel von der Berliner Ingenieursgesellschaft REUS
  • die Zeit, die einige Lehrer als Versuchskaninchen aufgebracht haben

Screen-Shot und Download

Der folgende Screen-Shot zeigt einen Ausschnitt des Fensters, in welchem die manuelle Plan-Erstellung erfolgt. Die dunkel hervorgehobene Stunde soll an eine andere Zeit verschoben werden. Dazu muß sie ihren Platz mit einer anderen Stunde tauschen. Die Software findet 3 Stunden, die in Frage kommen (grün umrandet).
Die übrigen Farben kennzeichnen die Unterrichts-Typen (Kurse rot und Mehrfachstunden blau).

Die vorliegende Version ist frei verfügbar und voll funktionsfähig. Eine Hilfe-Datei steht nicht zur Verfügung.
Mitgeliefert wird ein Beispiel-Plan (BspPlan.pdt). Aus dieser Datei läßt sich bei Bedarf die zugehörige Stamm-Daten-Datei erzeugen.

Für nähere Informationen zu den Optimierungs-Algorithmen, Programm-Interna und was das alles eigentlich mit evolutionärer Programmierung zu tun hat, wird auf die umfangreiche Studien-Arbeit verwiesen.

Studien-Arbeit: expose.zip (285K, pdf-Dokument)

Das Programm: SPGenerator.zip (627K, Programm-Datei + Beispiel-Plan)


Stundenplan-Erstellung
[Home][Software][Evolution]

Copyright © J.Weingärtner, [Letzte Aktualisierung 18.10.2006]
i_n_f_o_@_d_s_c_h_e_n_s_k_y_._d_e