Stundenplanerstellung

Neue Frage »

Auf diesen Beitrag antworten »
TomS Stundenplanerstellung

Meine Frage:
Meine Frau ist jetzt Leiterin einer kleinen Schule - und steht zum ersten Mal vor dem Problem, eine Stundenplan zu erstellen bzw. aktuell einen existierenden Stundenplan zu "verbessern". Dazu gibt es nun einige (frei verfügbare oder auch teure) Programme, mit denen man Zeiten, Klassen, Lehrer, Fächer sowie Nebenbedingungen definieren kann.

Bsp.
- Deutsch immer sechs Stunden / Woche (zwingend)
- bestimmte Fächer nur Vormittags (zwingend)
- keine Lücken im Stundenplan (zwingend)
- Lehrer X nur Mittwoch (erwünscht)
- nur Sport oder Werken am Nachmittag (zwingend)
- Sport immer als Doppelstunde (erwünscht)
- ...

Das geht mit den Programmen wohl ganz gut, aber ich bin auf der Suche nach einer (am besten frei verfügbaren) Programmiersprache, mittels der man diese Bedingungen einigermaßen sinnvoll formulieren kann. Dabei soll z.B. eine Liste dieser Bedingungen formuliert und anschließend ein möglicher Stundenplan erstellt weren.

Ich lerne aus den Diskussionen, dass in einem bestimmten Stundenplan wieder irgend etwas nicht passt ("dann hätte die zweite Klase am Freitag nur zwei Stunden, das geht nicht"), so dass dann eine neue Bedingung hinzukommt:
- mindestens vier, maximal acht Stundne am Tag

Die Idee ist also, diese neue Bedingung zu der Liste hinzuzufügen und eine neue Berechnung zu starten.

Kennt jemand so eine Programmiersprache? Oder hat jemand eine Idee, wie ich mir selbst einen Interpreter für soetwas bauen kann? Welche Sprache wäre dafür geeignet?
(ich habe früher sehr viel C/C++, teilw. JAVA u.ä. gearbeitet; damit ginge das, wäre aber sehr unschön zu formulieren; gibt es etwas, das ziemlich gut auf diese Art der Problemstellung darauf zugeschnitten ist?)

Meine Ideen:
Schwierig, wenn ich eine Idee hätte, würde ich es ausprobieren.

In C/C++ würde ich Klassen bzw. Funktionen mit Constraints formulieren und eine Iteration über Stunden, Klassen, Lehrer usw. schreiben.

Alternativ könnte ich mir eine Monte-Carlo-Simulation mit Importance Sampling vorstellen, wobei ich bei Erfüllung / Nichterfüllung entsprechende Gewichte vergebe.
 
Auf diesen Beitrag antworten »
bla

evtl. Prolog
Auf diesen Beitrag antworten »
Karlito

Prolog müsste sowas theoretisch können. Ich weis jedoch nicht, ob Prolog auch "ungenaue Lösungen" angeben kann. Soweit ich weis errechnet Prolog Ergebnisse richtig. Bei der Menge der möglichen Kombinationen kann das jedoch sehr lange dauern (Tage/Wochen/Jahre).

Soweit ich weis werden für die Erstellung von Stundenplänen evolutionäre Algorithmen angewendet. Eine andere Lösung kenne ich nicht, was aber nicht heißt dass es keine gibt Augenzwinkern

VG,

Karlito
Auf diesen Beitrag antworten »
TomS-2

Ich tendiere momentan zu Simulated Annealing; EAs kenne ich nicht, soll aber teilw. sehr effizient sein. Constraint / Logic Programming, Prolog u.ä. kenne ich ebenfalls noch nicht; würde mich interessieren, aber ich habe Sorge bzgl. Leistungsfähigkeit und Perfomance - und das weiß ich erst hinterher.
 
Auf diesen Beitrag antworten »
Karlito

Simulated Annealing klingt interessant. Leider kann ich hier nicht beratend an der Seite stehen (so weit bin ich leider noch nicht).

Schau dir mal AForge an. Vlt kann dir das weiterhelfen.

VG,

Karlito
 
Neue Frage »
Antworten »


Verwandte Themen