Class PropTimesNaive
- All Implemented Interfaces:
Comparable<Propagator<IntVar>>
,ICause
,Identity
- Since:
- 26/01/11
- Author:
- Charles Prud'homme
-
Field Summary
FieldsFields inherited from class org.chocosolver.solver.constraints.Propagator
ACTIVE, constraint, model, operations, priority, reactToFineEvt, state, vars
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal int
getPropagationConditions
(int vIdx) Returns the specific mask indicating the variable events on which thisPropagator
object can react.
A mask is a bitwise OR operations overIEventType
this can react on.final ESat
Check wetherthis
is entailed according to the current state of its internal structure.final void
propagate
(int evtmask) Call the main filtering algorithm to apply to theDomain
of theVariable
objects.Methods inherited from class org.chocosolver.solver.constraints.Propagator
addVariable, arity, bounds, compareTo, defaultReason, doFinePropagation, doFlush, doSchedule, doScheduleEvent, dynPriority, equals, fails, fails, forcePropagate, forcePropagationOnBacktrack, forEachIntVar, getConstraint, getId, getModel, getNbVars, getPosition, getPriority, getVar, getVars, getVIndice, getVIndices, hashCode, isActive, isCompletelyInstantiated, isPassive, isReified, isReifiedAndSilent, isStateLess, lbounds, lcg, linkVariables, manageReification, propagate, reactToFineEvent, reason, setActive, setEnabled, setPassive, setPosition, setReifiedSilent, setReifiedTrue, setVIndices, toString, ubounds, unlinkVariables, unschedule
-
Field Details
-
MAX
protected static final int MAX- See Also:
-
MIN
protected static final int MIN- See Also:
-
-
Constructor Details
-
PropTimesNaive
-
-
Method Details
-
getPropagationConditions
public final int getPropagationConditions(int vIdx) Description copied from class:Propagator
Returns the specific mask indicating the variable events on which thisPropagator
object can react.
A mask is a bitwise OR operations overIEventType
this can react on.For example, consider a propagator that can deduce filtering based on the lower bound of the integer variable X. Then, for this variable, the mask should be equal to :
int mask = IntEventType.INCLOW.getMask() | IntEventType.INSTANTIATE.getMask();
or, in a more convenient way:int mask = IntEvtType.combine(IntEventType.INCLOW,IntEventType.INSTANTIATE);
That indicates the following behavior:
- if X is instantiated, this propagator will be executed,
- if the lower bound of X is modified, this propagator will be executed,
- if the lower bound of X is removed, the event is promoted from REMOVE to INCLOW and this propagator will NOT be executed,
- otherwise, this propagator will NOT be executed
Some combinations are valid. For example, a propagator which reacts on REMOVE and INSTANTIATE should also declare INCLOW and DECUPP as conditions. Indeed, INCLOW (resp. DECUPP), for efficiency purpose, removing the lower bound (resp. upper bound) of an integer variable will automatically be promoted into INCLOW (resp. DECUPP). So, ignoring INCLOW and/or DECUPP in that case may result in a lack of filtering.
The same goes with events of other variable types, but most of the time, there are only few combinations.
Reacts to any kind of event by default.
Alternatively, this method can return
IntEventType.VOID
which states that this propagator should not be aware of modifications applied to the variable in position vIdx.- Overrides:
getPropagationConditions
in classPropagator<IntVar>
- Parameters:
vIdx
- index of the variable within the propagator- Returns:
- an int composed of
REMOVE
and/orINSTANTIATE
and/orDECUPP
and/orINCLOW
-
propagate
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.
-
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
-