YacsConstraintManagerImpl
Keywords: yacs.YacsConstraintManagerImpl class

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## yacs
Class YacsConstraintManagerImpl

    java.lang.Object
      yacs.YacsConstraintManagerImpl

All Implemented Interfaces:
  YacsConstraintManager

public class YacsConstraintManagerImpl
extends java.lang.Object
implements YacsConstraintManager

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

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

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

### YacsConstraintManagerImpl

    public 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

    public YacsConstraintManagerImpl(java.lang.String strategyPath)

  Konstruktor -- Der Parameter `strategyPath` ist der Pfad zur der XML-Datei, in der die Constraint-Lösungsstrategien spezifiziert sind.

Parameters:
  `strategyPath` - String

Method Detail

### getStrategyNames

    public java.util.List getStrategyNames()

  Liefert eine "unmodifizierbare" Liste mit den Namen (`Strings`) der existierenden Constraint-Lösungsstrategien und entsprechend der verfügbaren Constraint-Netze.

  Specified by:
    `getStrategyNames` in interface `YacsConstraintManager`
  Returns:
    List

### getConstraintNets

    public java.util.List getConstraintNets()

  Liefert eine "unmodifizierbare" Liste mit verfügbaren Constraint-Netzen (enthält Instanzen der Klasse `yacs.net.ConstraintNet`).

  Specified by:
    `getConstraintNets` in interface `YacsConstraintManager`
  Returns:
    List

### getConstraintNet

    public ConstraintNet getConstraintNet(java.lang.String strategyName)
                                   throws StrategyNotFoundException

  Liefert das entsprechende Constraint-Netz zu dem übergebenen Strategienamen, `null` wenn kein Constraint-Netz mit dieser Strategie existiert.

  Specified by:
    `getConstraintNet` in interface `YacsConstraintManager`
  Parameters:
    `strategyName` - String
  Returns:
    ConstraintNet
  Throws:
    `StrategyNotFoundException`

### addConstraint

    public void addConstraint(java.lang.String constraint,
                              java.lang.String strategyName)
                       throws ConstraintParserException,
                              StrategyNotFoundException

  Mit dieser Methoden kann ein Constraint inkrementell dem Lösungsprozess zugeführt werden. Neben dem eigentlichen Constraint-Ausdruck als `String` wird der Name der Strategie benötigt, mit der das Constraint verarbeitet werden soll.

  Specified by:
    `addConstraint` in interface `YacsConstraintManager`
  Parameters:
    `constraint` - String
    `strategyName` - String
  Throws:
    `ConstraintParserException`
    `StrategyNotFoundException`

### addConstraints

    public void addConstraints(java.lang.String constraint,
                               java.lang.String strategyName)
                        throws ConstraintParserException,
                               StrategyNotFoundException

  Mit dieser Methoden können mehrere Constraints gleichzeitig bzw. ein Teilproblem inkrementell dem Lösungsprozess zugeführt werden. Neben dem eigentlichen Constraint-Ausdruck als `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.

  Specified by:
    `addConstraints` in interface `YacsConstraintManager`
  Parameters:
    `constraint` - String
    `strategyName` - String
  Throws:
    `ConstraintParserException`
    `StrategyNotFoundException`

### setVariableDomain

    public void setVariableDomain(java.lang.String variableName,
                                  Domain variableDomain)
                           throws VariableNotFoundException

  Setzt den Wertebereich für eine Variable.

  Specified by:
    `setVariableDomain` in interface `YacsConstraintManager`
  Parameters:
    `variableName` - String
    `variableDomain` - Domain
  Throws:
    `VariableNotFoundException`

### getVariableDomain

    public Domain getVariableDomain(java.lang.String variableName)
                             throws VariableNotFoundException

  Liefert die entsprechende Domäne zur übergebenen Variable.

  Specified by:
    `getVariableDomain` in interface `YacsConstraintManager`
  Parameters:
    `variableName` - String
  Returns:
    Domain
  Throws:
    `VariableNotFoundException`

### getVariables

    public java.util.List getVariables()

  Liefert eine Liste mit den Namen aller Variablen sämtlicher vorhandenen Constraint-Netze (enthält Instanzen der Klasse `String`).

  Specified by:
    `getVariables` in interface `YacsConstraintManager`
  Returns:
    List

### getVariables

    public java.util.List getVariables(java.lang.String strategyName)
                                throws StrategyNotFoundException

  Liefert eine Liste mit den Variablen (Instanzen der Klasse `yacs.parser.Variable`), die sich in dem der übergebenen Strategie zugehörigen Constraint-Netz befinden.

  Specified by:
    `getVariables` in interface `YacsConstraintManager`
  Parameters:
    `strategyName` - String
  Returns:
    List
  Throws:
    `StrategyNotFoundException`

### getSolutions

    public Solutions getSolutions(java.lang.String strategyName)
                           throws StrategyNotFoundException

  Liefert die ggf. bereits gefundenen Lösungen für das der übergebenen Strategie zugehörige Teilproblem.

  Specified by:
    `getSolutions` in interface `YacsConstraintManager`
  Parameters:
    `strategyName` - String
  Returns:
    Solutions
  Throws:
    `StrategyNotFoundException`

### hasSolutions

    public boolean hasSolutions(java.lang.String strategyName)
                         throws StrategyNotFoundException

  Liefert `true`, wenn für das der übergebenen Strategie zugehörige Teilproblem bereits Lösungen gefunden wurden, `false` wenn nicht.

  Specified by:
    `hasSolutions` in interface `YacsConstraintManager`
  Parameters:
    `strategyName` - String
  Returns:
    boolean
  Throws:
    `StrategyNotFoundException`

### hasFalseDomain

    public boolean hasFalseDomain(java.lang.String strategyName)
                           throws StrategyNotFoundException

  Liefert `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.

  Specified by:
    `hasFalseDomain` in interface `YacsConstraintManager`
  Parameters:
    `strategyName` - String
  Returns:
    boolean
  Throws:
    `StrategyNotFoundException`

### hasValuationDomain

    public boolean hasValuationDomain(java.lang.String strategyName)
                               throws StrategyNotFoundException

  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. Ansonsten wird `false` zurückgegeben.

  Specified by:
    `hasValuationDomain` in interface `YacsConstraintManager`
  Parameters:
    `strategyName` - String
  Returns:
    boolean
  Throws:
    `StrategyNotFoundException`

### isInconsistent

    public boolean isInconsistent(java.lang.String strategyName)
                           throws StrategyNotFoundException

  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).

  Specified by:
    `isInconsistent` in interface `YacsConstraintManager`
  Parameters:
    `strategyName` - String
  Returns:
    boolean
  Throws:
    `StrategyNotFoundException`

### evaluate

    public void evaluate()

  Startet den Constraint-Lösungsvorgang. Ruft jeweils solange die Auswertemethoden der vorhandenen Constraint-Netze auf (`triggerPreprocess()`, `triggerConsistency` und `triggerSearch`), bis keine Wertebereichseinschränkungen mehr auftreten.

  Specified by:
    `evaluate` in interface `YacsConstraintManager`

### tabularasa

    public void tabularasa()

  Setzt sämtliche Constraint-Netze wieder in den Ausgangszustand zurück, d.h. es werden alle Informationen über die zugehörigen Teilprobleme der Strategie gelöscht (Constraints, Variablen, Domänen, etc.).

  Specified by:
    `tabularasa` in interface `YacsConstraintManager`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD