ConstraintNet
Keywords: yacs.net.ConstraintNet 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.net
Class ConstraintNet

    java.lang.Object
      yacs.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

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