Klasse zur Repräsentation des Constraint-Netzes eines Teilproblems innerhalb von YACS.
Deklaration:
Konstruktoren:
Das Constraint-Netz muss mit einer zugehörigen Strategie instantiiert werden, die für die Verarbeitung der Constraints verwendet wird.
Benötigt die zugehörige Strategie und ein oder mehrere Constraints als Expression (ein Constraint-Teilproblem generiert aus einem String mit Kommata-separierter Liste von Constraint-Ausdrücken).
Methoden:
Fügt ein Constraint dem vorhandenen Constraint-Expression hinzu. Damit ein einheitlicher Namensraum sichergestellt ist, muss durch den Parser sichergestellt werden, dass neue Variablen mit den Namen bereits existierender Variablen auf dassselbe Objekt verweisen.
Liefert den Namen der zu diesem Teilproblem gehörigen Constraint-Lösungsstrategie.
Liefert das Constraint-Teilproblem bzw. den Constraint-Ausdruck.
Liefert eine Liste der in diesem Teilproblem enthaltenen (primitiven) Constraints (enthält Instanzen der Klasse yacs.parser.Expression).
Liefert eine ,,unmodifizierbare`` Liste aller Variablen (als Strings) des Teilproblems.
Liefert die bereits gefundenen Lösungen für dieses Teilproblem.
Fügt diesem Teilproblem eine Lösungen hinzu. Liefert true, wenn dies erfolgreich verlaufen ist (Lösung war noch nicht vorhanden), false wenn nicht (Lösung existierte bereits)
Erzeugt und liefert eine ,,unmodifizierbare`` Liste aller Domänen (Instanzen der der Klasse yacs.domain.Domain) des Teilproblems.
Liefert die entsprechende Domäne zur übergebenen Variable. Gibt null zurück, wenn keine Variable unter dem angegebenen Namen existiert.
Belegt die angegebene Variable mit der übergebenen Domäne.
Liefert true, wenn die Domäne einer Variable des Teilproblems leer ist. In diesem Fall ist keine Konsistenz bzw. Lösung herstellbar. Ansonsten wird false zurückgegeben.
Liefert true, wenn eine valuation domain vorliegt, d.h. in den Domänen aller Variablen des Teilproblems ist jeweils genau ein Wert enthalten. Ansonsten wird false zurückgegeben.
Liefert true, wenn für das Teilproblem bereits Lösungen gefunden wurden, false wenn nicht.
Gibt zurück, ob von einem Constraint-Solver eine Inkonsistenz gemeldet wurde (durch Auslösen einer InconsistencyException).
Phase 1 der Constraint-Verarbeitung: Wendet die in der Strategie spezifizierten Preprozessing-Solver auf das Constraint-Netz an. Liefert true, wenn Wertebereichseinschränkungen vorgenommen wurden, false wenn nicht.
Phase 2 der Constraint-Verarbeitung: Wendet die in der Strategie spezifizierten Solver zur Konsistenzherstellung auf das Constraint-Netz an. Liefert true, wenn Wertebereichseinschränkungen vorgenommen wurden, false wenn nicht.
Phase 3 der Constraint-Verarbeitung: Wendet die in der Strategie spezifizierten Solver zur Lösungssuche auf das Constraint-Netz an. Liefert true, wenn Wertebereichseinschränkungen vorgenommen wurden, false wenn nicht.
Initialisiert das Constraint-Netz, d.h. es wird der Expression für das Teilproblem (inkl. der Variablen und Domänen sowie der primitiven Constraints), die bisher gefundenen Lösungen sowie die Informationen über die Konsistenz des Constraint-Netzes gelöscht.
Rückgabe des Constraint-Netzes als String (für Debugging).