Module org.chocosolver
Class PropCompactTable
- java.lang.Object
-
- org.chocosolver.solver.constraints.Propagator<IntVar>
-
- org.chocosolver.solver.constraints.extension.nary.PropCompactTable
-
- All Implemented Interfaces:
Comparable<Propagator>
,ICause
,Identity
- Direct Known Subclasses:
PropCompactTableStar
public class PropCompactTable extends Propagator<IntVar>
Propagator for table constraint based on "Compact-Table: Efficiently Filtering Table Constraints with Reversible Sparse Bit-Sets" Only for feasible Tuples- Since:
- 28/04/2016
- Author:
- Jean-Guillaume FAGES, Charles Prud'homme
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
PropCompactTable.RSparseBitSet
-
Field Summary
Fields Modifier and Type Field Description protected IIntDeltaMonitor[]
monitors
protected int[]
offset
protected long[][][]
supports
protected Tuples
tuples
-
Fields inherited from class org.chocosolver.solver.constraints.Propagator
ACTIVE, constraint, DEFAULT_EXPL, model, operations, OUTPUT_DEFAULT_EXPL, priority, reactToFineEvt, state, vars
-
-
Constructor Summary
Constructors Constructor Description PropCompactTable(IntVar[] vars, Tuples tuples)
Create a propagator for table constraint Only for feasible Tuples
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
computeSupports(Tuples tuples)
ESat
isEntailed()
Check wetherthis
is entailed according to the current state of its internal structure.protected UnaryIntProcedure<Integer>
makeProcedure()
void
propagate(int evtmask)
Call the main filtering algorithm to apply to theDomain
of theVariable
objects.void
propagate(int vIdx, int mask)
Incremental filtering algorithm defined within thePropagator
, called whenever the variable of index idxVarInProp has changed.-
Methods inherited from class org.chocosolver.solver.constraints.Propagator
addVariable, arity, compareTo, defaultExplain, doFinePropagation, doFlush, doSchedule, doScheduleEvent, dynPriority, equals, explain, fails, forcePropagate, forcePropagationOnBacktrack, forEachIntVar, getConstraint, getId, getModel, getNbVars, getPosition, getPriority, getPropagationConditions, getVar, getVars, getVIndice, getVIndices, hashCode, isActive, isCompletelyInstantiated, isPassive, isReified, isReifiedAndSilent, isScheduled, isStateLess, linkVariables, reactToFineEvent, reifiedWith, setActive, setActive0, setPassive, setPosition, setReifiedSilent, setReifiedTrue, setVIndices, toString, unlinkVariables, unschedule
-
-
-
-
Field Detail
-
tuples
protected Tuples tuples
-
supports
protected long[][][] supports
-
offset
protected int[] offset
-
monitors
protected IIntDeltaMonitor[] monitors
-
-
Method Detail
-
makeProcedure
protected UnaryIntProcedure<Integer> makeProcedure()
-
computeSupports
protected void computeSupports(Tuples tuples)
-
propagate
public void propagate(int evtmask) throws ContradictionException
Description copied from class:Propagator
Call the main filtering algorithm to apply to theDomain
of theVariable
objects. It considers the current state of this objects to remove some values from domains and/or instantiate some variables. Calling this method is done from 2 (and only 2) steps:
- at the initial propagation step,
- when involved in a reified constraint.
It should initialized the internal data structure and apply filtering algorithm from scratch.- Specified by:
propagate
in classPropagator<IntVar>
- Parameters:
evtmask
- type of propagation eventthis
must consider.- Throws:
ContradictionException
- when a contradiction occurs, like domain wipe out or other incoherencies.
-
propagate
public void propagate(int vIdx, int mask) throws ContradictionException
Description copied from class:Propagator
Incremental filtering algorithm defined within thePropagator
, called whenever the variable of index idxVarInProp has changed. This method calls a CUSTOM_PROPAGATION (coarse-grained) by default.This method should be overridden if the argument
reactToFineEvt
is set totrue
in the constructor. Otherwise, it executespropagate(PropagatorEventType.CUSTOM_PROPAGATION.getStrengthenedMask());
- Overrides:
propagate
in classPropagator<IntVar>
- Parameters:
vIdx
- index of the variablevar
inthis
mask
- type of event- Throws:
ContradictionException
- if a contradiction occurs
-
isEntailed
public ESat isEntailed()
Description copied from class:Propagator
Check wetherthis
is entailed according to the current state of its internal structure. At least, should check the satisfaction ofthis
(when all is instantiated).- Specified by:
isEntailed
in classPropagator<IntVar>
- Returns:
- ESat.TRUE if entailed, ESat.FALSE if not entailed, ESat.UNDEFINED if unknown
-
-