Module org.chocosolver
Class PropConditionnal
- java.lang.Object
-
- org.chocosolver.solver.constraints.Propagator<Variable>
-
- org.chocosolver.solver.constraints.reification.PropConditionnal
-
- All Implemented Interfaces:
Comparable<Propagator>
,ICause
,Identity
public abstract class PropConditionnal extends Propagator<Variable>
A specific propagator which posts constraint on condition.
The user gives the condition, then
if the condition returns ESat.TRUE, then posts temporarily the first propagator,
if the condition returns Esat.FALSE, then it posts temporarily the second propagator,
Otherwise wait for the condition to be fully (un)satisfied.- Since:
- 06/02/2014
- Author:
- Charles Prud'homme
-
-
Field Summary
-
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 PropConditionnal(Variable[] vars2observe, Constraint[] condTrue, Constraint[] condFalse)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract ESat
checkCondition()
Check a specific condition.
If the condition returns ESat.TRUE, then posts temporarily the first propagator,
If the condition returns Esat.FALSE, then it posts temporarily the second propagator,
Otherwise wait for the condition to be fully (un)satisfied.ESat
isEntailed()
Check wetherthis
is entailed according to the current state of its internal structure.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, 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, propagate, reactToFineEvent, reifiedWith, setActive, setActive0, setPassive, setPosition, setReifiedSilent, setReifiedTrue, setVIndices, toString, unlinkVariables, unschedule
-
-
-
-
Constructor Detail
-
PropConditionnal
public PropConditionnal(Variable[] vars2observe, Constraint[] condTrue, Constraint[] condFalse)
- Parameters:
vars2observe
- set of variables to observe, their modifications triggers the condition checkingcondTrue
- the constraint to post if the condition is satisfiedcondFalse
- the constraint to post if the condition is not satisfied
-
-
Method Detail
-
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<Variable>
- Parameters:
evtmask
- type of propagation eventthis
must consider.- Throws:
ContradictionException
- when a contradiction occurs, like domain wipe out or other incoherencies.
-
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<Variable>
- Returns:
- ESat.TRUE if entailed, ESat.FALSE if not entailed, ESat.UNDEFINED if unknown
-
checkCondition
public abstract ESat checkCondition()
Check a specific condition.
If the condition returns ESat.TRUE, then posts temporarily the first propagator,
If the condition returns Esat.FALSE, then it posts temporarily the second propagator,
Otherwise wait for the condition to be fully (un)satisfied.- Returns:
- Esat
-
-