yacs.net
Class ConstraintNet

java.lang.Object
  extended byyacs.net.ConstraintNet

public class ConstraintNet
extends java.lang.Object

Klasse zur Repräsentation des Constraint-Netzes eines Teilproblems innerhalb von YACS.

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

Version:
YACS 0.1.1
Author:
Wolfgang Runte (woru@tzi.org)

Constructor Summary
ConstraintNet(Strategy strategy)
          Konstruktor -- Das Constraint-Netz muss mit einer zugehörigen Strategie instantiiert werden, die für die Verarbeitung der Constraints verwendet wird.
ConstraintNet(Strategy strategy, Expression expr)
          Konstruktor -- 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).
 
Method Summary
 void addConstraint(Expression constraint)
          Fügt ein Constraint dem vorhandenen Constraint-Expression hinzu.
 boolean addSolution(Solution solution)
          Fügt diesem Teilproblem eine Lösungen hinzu.
 void clear()
          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.
 java.util.List getConstraints()
          Liefert eine Liste der in diesem Teilproblem enthaltenen (primitiven) Constraints (enthält Instanzen der Klasse yacs.parser.Expression).
 Domain getDomain(java.lang.String variableName)
          Liefert die entsprechende Domäne zur übergebenen Variable.
 java.util.List getDomains()
          Erzeugt und liefert eine "unmodifizierbare" Liste aller Domänen (Instanzen der der Klasse yacs.domain.Domain) des Teilproblems.
 Solutions getSolutions()
          Liefert die bereits gefundenen Lösungen für dieses Teilproblem.
 java.lang.String getStrategyName()
          Liefert den Namen der zu diesem Teilproblem gehörigen Constraint-Lösungsstrategie.
 Expression getSubproblem()
          Liefert das Constraint-Teilproblem bzw. den Constraint-Ausdruck.
 java.util.List getVariables()
          Liefert eine "unmodifizierbare" Liste aller Variablen (als Strings) des Teilproblems.
 boolean hasFalseDomain()
          Liefert true, wenn die Domäne einer Variable des Teilproblems leer ist.
 boolean hasSolutions()
          Liefert true, wenn für das Teilproblem bereits Lösungen gefunden wurden, false wenn nicht.
 boolean hasValuationDomain()
          Liefert true, wenn eine "valuation domain" vorliegt, d.h. in den Domänen aller Variablen des Teilproblems ist jeweils genau ein Wert enthalten.
 boolean isInconsistent()
          Gibt zurück, ob von einem Constraint-Solver eine Inkonsistenz gemeldet wurde (durch Auslösen einer InconsistencyException).
 boolean setDomain(java.lang.String variableName, Domain variableDomain)
          Belegt die angegebene Variable mit der übergebenen Domäne.
 java.lang.String toString()
          Rückgabe des Constraint-Netzes als String (für Debugging).
 boolean triggerConsistency()
          Phase 2 der Constraint-Verarbeitung: Wendet die in der Strategie spezifizierten Solver zur Konsistenzherstellung auf das Constraint-Netz an.
 boolean triggerPreprocessing()
          Phase 1 der Constraint-Verarbeitung: Wendet die in der Strategie spezifizierten Preprozessing-Solver auf das Constraint-Netz an.
 boolean triggerSearch()
          Phase 3 der Constraint-Verarbeitung: Wendet die in der Strategie spezifizierten Solver zur Lösungssuche auf das Constraint-Netz an.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ConstraintNet

public ConstraintNet(Strategy strategy)
Konstruktor -- Das Constraint-Netz muss mit einer zugehörigen Strategie instantiiert werden, die für die Verarbeitung der Constraints verwendet wird.

Parameters:
strategy - Strategy

ConstraintNet

public ConstraintNet(Strategy strategy,
                     Expression expr)
Konstruktor -- 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).

Parameters:
strategy - Strategy
expr - Expression
Method Detail

addConstraint

public void addConstraint(Expression constraint)
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.

Parameters:
constraint - Expression

getStrategyName

public java.lang.String getStrategyName()
Liefert den Namen der zu diesem Teilproblem gehörigen Constraint-Lösungsstrategie.


getSubproblem

public Expression getSubproblem()
Liefert das Constraint-Teilproblem bzw. den Constraint-Ausdruck.

Returns:
Expression

getConstraints

public java.util.List getConstraints()
Liefert eine Liste der in diesem Teilproblem enthaltenen (primitiven) Constraints (enthält Instanzen der Klasse yacs.parser.Expression).

Returns:
List

getVariables

public java.util.List getVariables()
Liefert eine "unmodifizierbare" Liste aller Variablen (als Strings) des Teilproblems.

Returns:
List

getSolutions

public Solutions getSolutions()
Liefert die bereits gefundenen Lösungen für dieses Teilproblem.

Returns:
Solutions

addSolution

public boolean addSolution(Solution solution)
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)

Parameters:
solution - Solution
Returns:
boolean

getDomains

public java.util.List getDomains()
Erzeugt und liefert eine "unmodifizierbare" Liste aller Domänen (Instanzen der der Klasse yacs.domain.Domain) des Teilproblems.

Returns:
List

getDomain

public Domain getDomain(java.lang.String variableName)
Liefert die entsprechende Domäne zur übergebenen Variable. Gibt null zurück, wenn keine Variable unter dem angegebenen Namen existiert.

Parameters:
variableName - String
Returns:
Domain

setDomain

public boolean setDomain(java.lang.String variableName,
                         Domain variableDomain)
Belegt die angegebene Variable mit der übergebenen Domäne.

Parameters:
variableName - String
variableDomain - Domain

hasFalseDomain

public boolean hasFalseDomain()
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.

Returns:
boolean

hasValuationDomain

public boolean hasValuationDomain()
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.

Returns:
boolean

hasSolutions

public boolean hasSolutions()
Liefert true, wenn für das Teilproblem bereits Lösungen gefunden wurden, false wenn nicht.

Returns:
boolean

isInconsistent

public boolean isInconsistent()
Gibt zurück, ob von einem Constraint-Solver eine Inkonsistenz gemeldet wurde (durch Auslösen einer InconsistencyException).

Returns:
boolean

triggerPreprocessing

public boolean triggerPreprocessing()
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.


triggerConsistency

public boolean triggerConsistency()
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.


triggerSearch

public boolean triggerSearch()
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.


clear

public void clear()
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.


toString

public java.lang.String toString()
Rückgabe des Constraint-Netzes als String (für Debugging).

Returns:
String