Package org.jacop.constraints
Class Circuit
- java.lang.Object
-
- All Implemented Interfaces:
SatisfiedPresent
,Stateful
,UsesQueueVariable
public class Circuit extends Alldiff implements Stateful
Circuit constraint assures that all variables build a Hamiltonian circuit. Value of every variable x[i] points to the next variable in the circuit. Variables create one circuit.- Version:
- 4.8
-
-
Field Summary
Fields Modifier and Type Field Description (package private) int
chainLength
(package private) boolean
firstConsistencyCheck
(package private) int
firstConsistencyLevel
(package private) MutableVar[]
graph
(package private) SophisticatedLengauerTarjan
graphDominance
(package private) int
idd
(package private) static java.util.concurrent.atomic.AtomicInteger
idNumber
(package private) java.util.Random
random
(package private) int
sccLength
(package private) int[]
val
(package private) java.util.Hashtable<Var,java.lang.Integer>
valueIndex
-
Fields inherited from class org.jacop.constraints.Alldifferent
grounded, list, positionMapping, variableQueue
-
Fields inherited from class org.jacop.constraints.Constraint
afcWeight, atomicExecution, consistencyPruningEvents, constraintScope, earlyTerminationOK, increaseWeight, numberId, scope, trace, watchedVariableGrounded
-
Fields inherited from class org.jacop.constraints.DecomposedConstraint
queueIndex
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
alldifferent(Store store, java.util.LinkedHashSet<IntVar> fdvs)
void
consistency(Store store)
It is a (most probably incomplete) consistency function which removes the values from variables domains.private void
dominanceFilter()
(package private) int
firstNode(int current)
int
getDefaultConsistencyPruningEvent()
private boolean
graphDominance(int root)
void
impose(Store store)
It imposes the constraint in a given store.(package private) int
lastNode(Store store, int current)
(package private) void
oneCircuit(Store store, java.util.LinkedHashSet<IntVar> fdvs)
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.private boolean
reversedGraphDominance(int root)
boolean
satisfied()
It checks if the constraint is satisfied.(package private) void
sccs(Store store)
java.lang.String
toString()
It produces a string representation of a constraint state.(package private) void
updateChains(IntVar v)
(package private) int
visit(int k)
-
Methods inherited from class org.jacop.constraints.Alldiff
queueVariable
-
Methods inherited from class org.jacop.constraints.Alldifferent
notSatisfied
-
Methods inherited from class org.jacop.constraints.Constraint
afc, arguments, cleanAfterFailure, decompose, getConsistencyPruningEvent, getGuideConstraint, getGuideValue, getGuideVariable, grounded, grounded, id, impose, imposeDecomposition, increaseWeight, intArrayToString, long2int, numberArgs, removeConstraint, requiresMonotonicity, setConsistencyPruningEvent, setConstraintScope, setScope, setScope, setScope, setScope, setScope, setWatchedVariableGrounded, supplyGuideFeedback, toInt, toInt, updateAFC, watchedVariableGrounded
-
Methods inherited from class org.jacop.constraints.DecomposedConstraint
auxiliaryVariables, checkInput, checkInput, checkInputForDuplication, checkInputForDuplicationSkipSingletons, checkInputForNullness, checkInputForNullness, checkInputForNullness, derivative, getDubletonsSkipSingletons, imposeDecomposition
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.jacop.api.Stateful
isStateful
-
-
-
-
Field Detail
-
chainLength
int chainLength
-
firstConsistencyCheck
boolean firstConsistencyCheck
-
graph
MutableVar[] graph
-
idd
int idd
-
sccLength
int sccLength
-
val
int[] val
-
idNumber
static java.util.concurrent.atomic.AtomicInteger idNumber
-
valueIndex
java.util.Hashtable<Var,java.lang.Integer> valueIndex
-
firstConsistencyLevel
int firstConsistencyLevel
-
graphDominance
SophisticatedLengauerTarjan graphDominance
-
random
java.util.Random random
-
-
Method Detail
-
consistency
public void consistency(Store store)
Description copied from class:Constraint
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.- Overrides:
consistency
in classAlldiff
- Parameters:
store
- constraint store within which the constraint consistency is being checked.
-
firstNode
int firstNode(int current)
-
getDefaultConsistencyPruningEvent
public int getDefaultConsistencyPruningEvent()
- Overrides:
getDefaultConsistencyPruningEvent
in classAlldiff
-
impose
public void impose(Store store)
Description copied from class:Constraint
It imposes the constraint in a given store.
-
lastNode
int lastNode(Store store, int current)
-
satisfied
public boolean satisfied()
Description copied from interface:SatisfiedPresent
It checks if the constraint is satisfied. It can return false even if constraint is satisfied but not all variables in its scope are grounded. It needs to return true if all variables in its scope are grounded and constraint is satisfied.Implementations of this interface for constraints that are not PrimitiveConstraint may require constraint imposition and consistency check as a requirement to work correctly.
- Specified by:
satisfied
in interfaceSatisfiedPresent
- Overrides:
satisfied
in classAlldifferent
- Returns:
- true if constraint is possible to verify that it is satisfied.
-
sccs
void sccs(Store store)
-
toString
public java.lang.String toString()
Description copied from class:Constraint
It produces a string representation of a constraint state.
-
removeLevel
public void removeLevel(int level)
Description copied from interface:Stateful
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.- Specified by:
removeLevel
in interfaceStateful
- Parameters:
level
- the level which is being removed.
-
updateChains
void updateChains(IntVar v)
-
visit
int visit(int k)
-
dominanceFilter
private void dominanceFilter()
-
graphDominance
private boolean graphDominance(int root)
-
reversedGraphDominance
private boolean reversedGraphDominance(int root)
-
-