|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectyacs.YacsConstraintManagerImpl
Implementierung des YACS Constraint-Managers.
Copyright (C) 2005 Wolfgang Runte
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
USA
Constructor Summary | |
YacsConstraintManagerImpl()
Konstruktor -- Wird dieser Konstruktor ohne Angabe des Pfades zu der XML-Datei mit den Constraint-Lösungsstrategien aufgerufen, wird diese im aktuellen Verzeichnis unter dem Namen yacs_strategies.xml
gesucht. |
|
YacsConstraintManagerImpl(java.lang.String strategyPath)
Konstruktor -- Der Parameter strategyPath ist der Pfad zur der
XML-Datei, in der die Constraint-Lösungsstrategien spezifiziert sind. |
Method Summary | |
void |
addConstraint(java.lang.String constraint,
java.lang.String strategyName)
Mit dieser Methoden kann ein Constraint inkrementell dem Lösungsprozess zugeführt werden. |
void |
addConstraints(java.lang.String constraint,
java.lang.String strategyName)
Mit dieser Methoden können mehrere Constraints gleichzeitig bzw. ein Teilproblem inkrementell dem Lösungsprozess zugeführt werden. |
void |
evaluate()
Startet den Constraint-Lösungsvorgang. |
ConstraintNet |
getConstraintNet(java.lang.String strategyName)
Liefert das entsprechende Constraint-Netz zu dem übergebenen Strategienamen, null wenn kein Constraint-Netz mit dieser
Strategie existiert. |
java.util.List |
getConstraintNets()
Liefert eine "unmodifizierbare" Liste mit verfügbaren Constraint-Netzen (enthält Instanzen der Klasse yacs.net.ConstraintNet ). |
Solutions |
getSolutions(java.lang.String strategyName)
Liefert die ggf. bereits gefundenen Lösungen für das der übergebenen Strategie zugehörige Teilproblem. |
java.util.List |
getStrategyNames()
Liefert eine "unmodifizierbare" Liste mit den Namen ( Strings )
der existierenden Constraint-Lösungsstrategien und entsprechend der
verfügbaren Constraint-Netze. |
Domain |
getVariableDomain(java.lang.String variableName)
Liefert die entsprechende Domäne zur übergebenen Variable. |
java.util.List |
getVariables()
Liefert eine Liste mit den Namen aller Variablen sämtlicher vorhandenen Constraint-Netze (enthält Instanzen der Klasse String ). |
java.util.List |
getVariables(java.lang.String strategyName)
Liefert eine Liste mit den Variablen (Instanzen der Klasse yacs.parser.Variable ), die sich in dem der übergebenen
Strategie zugehörigen Constraint-Netz befinden. |
boolean |
hasFalseDomain(java.lang.String strategyName)
Liefert true , wenn die Domäne einer Variablen des der
übergebenen Strategie zugehörigen Teilproblems leer ist. |
boolean |
hasSolutions(java.lang.String strategyName)
Liefert true , wenn für das der übergebenen Strategie
zugehörige Teilproblem bereits Lösungen gefunden wurden,
false wenn nicht. |
boolean |
hasValuationDomain(java.lang.String strategyName)
Liefert true , wenn für das der übergebenen Strategie
zugehörige Teilproblem eine "valuation domain" vorliegt, d.h. in den
Domänen aller Variablen des Teilproblems ist jeweils genau ein Wert
enthalten. |
boolean |
isInconsistent(java.lang.String strategyName)
Gibt zurück, ob ein Constraint-Solver für das der übergebenen Strategie zugehörige Teilproblem eine Inkonsistenz gemeldet hat oder nicht (wird zurückgesetzt durch die benutzerinitiierte Modifikation der Wertebereiche der Constraint-Variablen und durch Hinzufügen einer Lösung zum Teilproblem). |
void |
setVariableDomain(java.lang.String variableName,
Domain variableDomain)
Setzt den Wertebereich für eine Variable. |
void |
tabularasa()
Setzt sämtliche Constraint-Netze wieder in den Ausgangszustand zurück, d.h. |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public YacsConstraintManagerImpl()
yacs_strategies.xml
gesucht.
public YacsConstraintManagerImpl(java.lang.String strategyPath)
strategyPath
ist der Pfad zur der
XML-Datei, in der die Constraint-Lösungsstrategien spezifiziert sind.
strategyPath
- StringMethod Detail |
public java.util.List getStrategyNames()
Strings
)
der existierenden Constraint-Lösungsstrategien und entsprechend der
verfügbaren Constraint-Netze.
getStrategyNames
in interface YacsConstraintManager
public java.util.List getConstraintNets()
yacs.net.ConstraintNet
).
getConstraintNets
in interface YacsConstraintManager
public ConstraintNet getConstraintNet(java.lang.String strategyName) throws StrategyNotFoundException
null
wenn kein Constraint-Netz mit dieser
Strategie existiert.
getConstraintNet
in interface YacsConstraintManager
strategyName
- String
StrategyNotFoundException
public void addConstraint(java.lang.String constraint, java.lang.String strategyName) throws ConstraintParserException, StrategyNotFoundException
String
wird der Name der Strategie benötigt, mit der das
Constraint verarbeitet werden soll.
addConstraint
in interface YacsConstraintManager
constraint
- StringstrategyName
- String
ConstraintParserException
StrategyNotFoundException
public void addConstraints(java.lang.String constraint, java.lang.String strategyName) throws ConstraintParserException, StrategyNotFoundException
String
(die
Constraint-Ausdrücke müssen darin jeweils durch ein Semikolon voneinander
getrennt sein) wird der Name der Strategie benötigt, mit der die
Constraints verarbeitet werden sollen.
addConstraints
in interface YacsConstraintManager
constraint
- StringstrategyName
- String
ConstraintParserException
StrategyNotFoundException
public void setVariableDomain(java.lang.String variableName, Domain variableDomain) throws VariableNotFoundException
setVariableDomain
in interface YacsConstraintManager
variableName
- StringvariableDomain
- Domain
VariableNotFoundException
public Domain getVariableDomain(java.lang.String variableName) throws VariableNotFoundException
getVariableDomain
in interface YacsConstraintManager
variableName
- String
VariableNotFoundException
public java.util.List getVariables()
String
).
getVariables
in interface YacsConstraintManager
public java.util.List getVariables(java.lang.String strategyName) throws StrategyNotFoundException
yacs.parser.Variable
), die sich in dem der übergebenen
Strategie zugehörigen Constraint-Netz befinden.
getVariables
in interface YacsConstraintManager
strategyName
- String
StrategyNotFoundException
public Solutions getSolutions(java.lang.String strategyName) throws StrategyNotFoundException
getSolutions
in interface YacsConstraintManager
strategyName
- String
StrategyNotFoundException
public boolean hasSolutions(java.lang.String strategyName) throws StrategyNotFoundException
true
, wenn für das der übergebenen Strategie
zugehörige Teilproblem bereits Lösungen gefunden wurden,
false
wenn nicht.
hasSolutions
in interface YacsConstraintManager
strategyName
- String
StrategyNotFoundException
public boolean hasFalseDomain(java.lang.String strategyName) throws StrategyNotFoundException
true
, wenn die Domäne einer Variablen des der
übergebenen Strategie zugehörigen Teilproblems leer ist. In diesem Fall ist
für dieses Teilproblem keine Konsistenz bzw. Lösung herstellbar. Ansonsten
wird false
zurückgegeben.
hasFalseDomain
in interface YacsConstraintManager
strategyName
- String
StrategyNotFoundException
public boolean hasValuationDomain(java.lang.String strategyName) throws StrategyNotFoundException
true
, wenn für das der übergebenen Strategie
zugehörige Teilproblem 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.
hasValuationDomain
in interface YacsConstraintManager
strategyName
- String
StrategyNotFoundException
public boolean isInconsistent(java.lang.String strategyName) throws StrategyNotFoundException
isInconsistent
in interface YacsConstraintManager
strategyName
- String
StrategyNotFoundException
public void evaluate()
triggerPreprocess()
, triggerConsistency
und
triggerSearch
), bis keine Wertebereichseinschränkungen mehr
auftreten.
evaluate
in interface YacsConstraintManager
public void tabularasa()
tabularasa
in interface YacsConstraintManager
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |