JaCoP.constraints
Class Constraint

java.lang.Object
  extended by JaCoP.constraints.DecomposedConstraint
      extended by JaCoP.constraints.Constraint
Direct Known Subclasses:
AdiffBeqC, AdisjointB, AintersectBeqC, Alldifferent, Alldistinct, Among, AmongVar, Assignment, AunionBeqC, CardA, CardAeqX, Count, Cumulative, Diff, Element, ElementInteger, ElementSet, ElementVariable, ExtensionalConflictVA, ExtensionalSupportMDD, ExtensionalSupportSTR, ExtensionalSupportVA, GCC, Geost, Knapsack, Lex, Match, Max, Min, NetworkFlow, PrimitiveConstraint, Regular, Reified, Sum, SumWeight, SumWeightedSet, Values, XdivYeqZ, XexpYeqZ, XmodYeqZ, XmulCeqZ, XmulYeqZ

public abstract class Constraint
extends DecomposedConstraint

Standard unified interface/abstract class for all constraints. Defines how to construct a constraint, impose, check satisfiability, notSatisfiability, enforce consistency.

Author:
Krzysztof Kuchcinski and Radoslaw Szymanek

Field Summary
 boolean atomicExecution
          It specifies if the constraint consistency function requires consistency function executed in one atomic step.
 java.util.Hashtable<Var,java.lang.Integer> consistencyPruningEvents
          It specifies the event which must occur in order for the consistency function to be called.
 boolean earlyTerminationOK
          It specifies if the constraint consistency function can be prematurely terminated through other than FailureException exception.
 java.lang.String id
          It specifies the string id of the constraint.
 boolean increaseWeight
          It specifies if upon the failure of the constraint, all variables in the constraint scope should have their weight increased.
 int numberArgs
          It specifies the number of variables in the constraint scope.
 int numberId
          It specifies the number id for a given constraint.
 
Fields inherited from class JaCoP.constraints.DecomposedConstraint
queueIndex
 
Constructor Summary
Constraint()
           
 
Method Summary
abstract  java.util.ArrayList<Var> arguments()
          It returns the variables in a scope of the constraint.
 void cleanAfterFailure()
          It is executed after the constraint has failed.
abstract  void consistency(Store store)
          It is a (most probably incomplete) consistency function which removes the values from variables domains.
 java.util.ArrayList<Constraint> decompose(Store store)
          It returns an array list of constraint which are used to decompose this constraint.
abstract  int getConsistencyPruningEvent(Var var)
          It retrieves the pruning event which causes reevaluation of the constraint.
 Constraint getGuideConstraint()
          It specifies a constraint which if imposed by search will enhance propagation of this constraint.
 int getGuideValue()
          This function provides a value which if assigned to a variable returned by getGuideVariable() will enhance propagation of this constraint.
 Var getGuideVariable()
          This function provides a variable which assigned a value returned by will enhance propagation of this constraint.
abstract  java.lang.String id()
          It gives the id string of a constraint.
abstract  void impose(Store store)
          It imposes the constraint in a given store.
 void impose(Store store, int queueIndex)
          It imposes the constraint and adjusts the queue index.
 void imposeDecomposition(Store store)
          It imposes the decomposition of the given constraint in a given store.
abstract  void increaseWeight()
          It increases the weight of the variables in the constraint scope.
 int numberArgs()
          It returns the number of variables within a constraint scope.
 void queueVariable(int level, Var var)
          This is a function called to indicate which variable in a scope of constraint has changed.
abstract  void removeConstraint()
          It removes the constraint by removing this constraint from all variables.
 void removeLevel(int level)
          This function is called in case of the backtrack, so a constraint can clear the queue of changed variables which is no longer valid.
 void removeLevelLate(int level)
          This function is called in case of the backtrack.
 boolean requiresMonotonicity()
          It specifies if the constraint allows domains of variables in its scope only to shrink its domain with the progress of search downwards.
abstract  boolean satisfied()
          It checks if the constraint is satisfied.
 void setConsistencyPruningEvent(Var var, int pruningEvent)
          It allows to customize the event for a given variable which causes the re-execution of the consistency method for a constraint.
 void supplyGuideFeedback(boolean feedback)
          This function allows to provide a guide feedback.
abstract  java.lang.String toString()
          It produces a string representation of a constraint state.
 
Methods inherited from class JaCoP.constraints.DecomposedConstraint
auxiliaryVariables, imposeDecomposition
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

numberId

public int numberId
It specifies the number id for a given constraint. All constraints within the same type have unique number ids.


id

public java.lang.String id
It specifies the string id of the constraint. If it is null then the string id is created from string associated for the constraint type and the numberId of the constraint.


increaseWeight

public boolean increaseWeight
It specifies if upon the failure of the constraint, all variables in the constraint scope should have their weight increased.


numberArgs

public int numberArgs
It specifies the number of variables in the constraint scope.


consistencyPruningEvents

public java.util.Hashtable<Var,java.lang.Integer> consistencyPruningEvents
It specifies the event which must occur in order for the consistency function to be called.


earlyTerminationOK

public boolean earlyTerminationOK
It specifies if the constraint consistency function can be prematurely terminated through other than FailureException exception.


atomicExecution

public boolean atomicExecution
It specifies if the constraint consistency function requires consistency function executed in one atomic step. A constraint can specify that if any other pruning events are initiated by outside entity then the constraint may not work correctly if the execution is continued, but it will work well if consistency() function is restarted.

Constructor Detail

Constraint

public Constraint()
Method Detail

arguments

public abstract java.util.ArrayList<Var> arguments()
It returns the variables in a scope of the constraint.

Returns:
variables in a scope of the constraint.

removeLevel

public void removeLevel(int level)
This function is called in case of the backtrack, so a constraint can clear the queue of changed variables which is no longer valid. This function is called *before* all timestamps, variables, mutablevariables have reverted to their previous value.

Parameters:
level - the level which is being removed.

removeLevelLate

public void removeLevelLate(int level)
This function is called in case of the backtrack. It is called after all timestamps, variables, mutablevariables have reverted to their values *after* removing the level.

Parameters:
level - the level which is being removed.

consistency

public abstract void consistency(Store store)
It is a (most probably incomplete) consistency function which removes the values from variables domains. Only values which do not have any support in a solution space are removed.

Parameters:
store - constraint store within which the constraint consistency is being checked.

getConsistencyPruningEvent

public abstract int getConsistencyPruningEvent(Var var)
It retrieves the pruning event which causes reevaluation of the constraint.

Parameters:
var - variable for which pruning event is retrieved
Returns:
it returns the int code of the pruning event (GROUND, BOUND, ANY, NONE)

id

public abstract java.lang.String id()
It gives the id string of a constraint.

Returns:
string id of the constraint.

impose

public abstract void impose(Store store)
It imposes the constraint in a given store.

Parameters:
store - the constraint store to which the constraint is imposed to.

impose

public void impose(Store store,
                   int queueIndex)
It imposes the constraint and adjusts the queue index.

Parameters:
store - the constraint store to which the constraint is imposed to.
queueIndex - the index of the queue in the store it is assigned to.

queueVariable

public void queueVariable(int level,
                          Var var)
This is a function called to indicate which variable in a scope of constraint has changed. It also indicates a store level at which the change has occurred.

Parameters:
level - the level of the store at which the change has occurred.
var - variable which has changed.

removeConstraint

public abstract void removeConstraint()
It removes the constraint by removing this constraint from all variables.


satisfied

public abstract boolean satisfied()
It checks if the constraint is satisfied. If this function is incorrectly implemented a constraint may not be satisfied in a solution.

Returns:
true if the constraint is for certain satisfied, false otherwise.

toString

public abstract java.lang.String toString()
It produces a string representation of a constraint state.

Overrides:
toString in class java.lang.Object

getGuideConstraint

public Constraint getGuideConstraint()
It specifies a constraint which if imposed by search will enhance propagation of this constraint.

Returns:
Constraint enhancing propagation of this constraint.

getGuideVariable

public Var getGuideVariable()
This function provides a variable which assigned a value returned by will enhance propagation of this constraint.

Returns:
Variable which is a base of enhancing constraint.

getGuideValue

public int getGuideValue()
This function provides a value which if assigned to a variable returned by getGuideVariable() will enhance propagation of this constraint.

Returns:
Value which is a base of enhancing constraint.

supplyGuideFeedback

public void supplyGuideFeedback(boolean feedback)
This function allows to provide a guide feedback. If constraint does not propose sufficiently good enhancing constraints it will be informed so it has a chance to reexamine its efforts.

Parameters:
feedback - true if the guide was useful, false otherwise.

increaseWeight

public abstract void increaseWeight()
It increases the weight of the variables in the constraint scope.


setConsistencyPruningEvent

public void setConsistencyPruningEvent(Var var,
                                       int pruningEvent)
It allows to customize the event for a given variable which causes the re-execution of the consistency method for a constraint.

Parameters:
var - variable for which the events are customized.
pruningEvent - the event which must occur to trigger execution of the consistency method.

numberArgs

public int numberArgs()
It returns the number of variables within a constraint scope.

Returns:
number of variables in the constraint scope.

requiresMonotonicity

public boolean requiresMonotonicity()
It specifies if the constraint allows domains of variables in its scope only to shrink its domain with the progress of search downwards.

Returns:
true, by default by all constraints.

imposeDecomposition

public void imposeDecomposition(Store store)
It imposes the decomposition of the given constraint in a given store.

Specified by:
imposeDecomposition in class DecomposedConstraint
Parameters:
store - the constraint store to which the constraint is imposed to.

decompose

public java.util.ArrayList<Constraint> decompose(Store store)
It returns an array list of constraint which are used to decompose this constraint. It actually creates a decomposition (possibly also creating variables), but it does not impose the constraint.

Specified by:
decompose in class DecomposedConstraint
Parameters:
store - the constraint store in which context the decomposition takes place.
Returns:
an array list of constraints used to decompose this constraint.

cleanAfterFailure

public void cleanAfterFailure()
It is executed after the constraint has failed. It allows to clean some data structures.