/optaPlannerExample

Beispielprojekt für JBoss OptaPlanner: Raum- und Terminplanung an einer Universität

Primary LanguageJava

optaPlannerExample

Build Status Quality Gate Status Coverage

Beispielprojekt für JBoss OptaPlanner: Raum- und Terminplanung an einer Universität.


Weitere Informationen zu OptaPlanner finden sich hier:

http://jaxenter.de/artikel/jboss-optaplanner-optimierung-2-0-176855
Kurzversion eines Artikels, der ein Vorgehensmodell zur Lösung von Optimierungsproblemen mit OptaPlanner skizziert. (Artikel veröffentlicht in Java Magazin 2.15)

http://www.optaplanner.org
offizielle OptaPlanner-Webseite


BEISPIELSZENARIO

Das Projekt implementiert beispielhaft die (stark vereinfachte) Raum- und Terminplanung an einer Universität auf Basis von JBoss OptaPlanner und JBoss Drools Expert. Ziel ist dabei, dass jeder Vorlesung ein Termin (Wochentag und Zeitintervall) und ein Raum zugeordnet wird.

Folgende Bedingungen müssen bei der Planung erfüllt werden (Hard Constraints):

  • Zwei Vorlesungen dürfen nicht zeitgleich im gleichen Raum stattfinden.
  • Die Vorlesungen eines Studiengangs dürfen sich zeitlich nicht überschneiden.

Folgende Bedingungen sollten erfüllt werden (Soft Constraints):

  • Die Vorlesungen eines Studiengangs sollten im gleichen Raum stattfinden.
  • Die Vorlesungen eines Studiengangs sollten an möglichst wenigen Wochentagen stattfinden.
  • Die Vorlesungen eines Studiengangs sollten pro Tag kompakt sein, sodass es möglichst keine Freistunden gibt.

Diese Bedingungen werden durch Drools-Regeln formuliert.


ENTWICKLUNGSUMGEBUNG

Das Projekt wurde mit Eclipse in der Version 4.3 (Kepler) umgesetzt. Das folgende Eclipse-Plugin wird benötigt:

Nach der Installation des Plugins muss eine Drools Runtime mit dem Namen "Drools 6.1.0.Final" eingerichtet werden. Dies erfolgt unter:
Preferences > Drools > Installed Drools Runtimes > Create a new Drools 6 Runtime

Das JDK wird mindestens in der Version 7 benötigt.


TESTDATEN

Zum Testen der Optimierung kann die Klasse SolverTest verwendet werden. Diese lädt einige Testdaten für Räume, Studiengänge und Vorlesungen aus drei csv-Dateien (siehe src/test/resources) in eine H2-Datenbank und führt die Optimierung mit dem OptaPlanner-Solver durch.

NEU: Das Beispiel wurde um eine Constraint Streams Variante erweitert. Zum Testen kann die Klasse SolverTestConstraintStreams verwendet werden.


KONTAKT