public class AmongVar extends Constraint implements UsesQueueVariable, Stateful, SatisfiedPresent
This constraint significantly extends the algorithms presented in the literature as it does not use the decomposition into simpler constraints.
Therefore as a result, it provides stronger pruning methods without noticeable increase in the execution time. The large part of the computation is reused across following executions of the consistency function. The strength of propagation algorithm is incomporable to BC.
Modifier and Type | Field and Description |
---|---|
static boolean |
debugAll
It turns out printing debugging information.
|
IntVar[] |
listOfX
List of variables x which values are checked against values of variables y.
|
IntVar[] |
listOfY
It specifies what values we are counting in the list of x's.
|
IntVar |
n
It specifies the number of x variables equal to at least one value present in the list of y.
|
atomicExecution, consistencyPruningEvents, constraintScope, earlyTerminationOK, increaseWeight, numberId, scope, trace
queueIndex
Constructor and Description |
---|
AmongVar(IntVar[] listOfX,
IntVar[] listOfY,
IntVar n)
It constructs an AmongVar constraint.
|
AmongVar(List<IntVar> listOfX,
List<IntVar> listOfY,
IntVar n)
It constructs an AmongVar constraint.
|
Modifier and Type | Method and Description |
---|---|
void |
consistency(Store store)
It is a (most probably incomplete) consistency function which removes the
values from variables domains.
|
void |
consistencyForX(Store store)
Is called when all y are grounded and amongForSet is equivalent to simple version of Among.
|
void |
consistencyForY(Store store)
It is a function which makes Y consistent if all X's are grounded.
|
void |
consistencyWhen_LB0_EQ_UB0(Store store)
The number of x in lbsDom is equal to the number of X intersecting ubSDom.
|
int |
getDefaultConsistencyPruningEvent() |
void |
impose(Store store)
It imposes the constraint in a given store.
|
void |
queueVariable(int level,
Var var)
This is a function called to indicate which variable in a scope of
constraint has changed.
|
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.
|
boolean |
satisfied()
It checks if the constraint is satisfied.
|
String |
toString()
It produces a string representation of a constraint state.
|
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, updateAFC, watchedVariableGrounded
auxiliaryVariables, checkInput, checkInput, checkInputForDuplication, checkInputForDuplicationSkipSingletons, checkInputForNullness, checkInputForNullness, checkInputForNullness, derivative, getDubletonsSkipSingletons, imposeDecomposition
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
isStateful
public static final boolean debugAll
public IntVar[] listOfX
public IntVar[] listOfY
public IntVar n
public AmongVar(IntVar[] listOfX, IntVar[] listOfY, IntVar n)
listOfX
- the list of variables whose equality to other set of variables we countlistOfY
- the list of variable to which equality is counted.n
- how many variables from list x are equal to at least one variable from list y.public AmongVar(List<IntVar> listOfX, List<IntVar> listOfY, IntVar n)
listOfX
- the list of variables whose equality to other set of variables we countlistOfY
- the list of variable to which equality is counted.n
- how many variables from list x are equal to at least one variable from list y.public void removeLevel(int level)
Stateful
removeLevel
in interface Stateful
level
- the level which is being removed.public void consistencyForX(Store store)
store
- constraint store in which context that consistency function is being executed.public void consistencyWhen_LB0_EQ_UB0(Store store)
1) If there are not enough of y to cover future domain then fail 2)
store
- a constraint store in which context all prunings are executed.public void consistencyForY(Store store)
store
- a constraint store in which context all prunings are executed.public void consistency(Store store)
Constraint
consistency
in class Constraint
store
- constraint store within which the constraint consistency is being checked.public int getDefaultConsistencyPruningEvent()
getDefaultConsistencyPruningEvent
in class Constraint
public void impose(Store store)
Constraint
impose
in class Constraint
store
- the constraint store to which the constraint is imposed to.public void queueVariable(int level, Var var)
Constraint
queueVariable
in class Constraint
level
- the level of the store at which the change has occurred.var
- variable which has changed.public boolean satisfied()
SatisfiedPresent
Implementations of this interface for constraints that are not PrimitiveConstraint may require constraint imposition and consistency check as a requirement to work correctly.
satisfied
in interface SatisfiedPresent
public String toString()
Constraint
toString
in class Constraint
Copyright © 2022. All rights reserved.