Class PropCumulative
- java.lang.Object
-
- org.chocosolver.solver.constraints.Propagator<IntVar>
-
- org.chocosolver.solver.constraints.nary.cumulative.PropCumulative
-
- All Implemented Interfaces:
Comparable<Propagator>
,ICause
,Identity
- Direct Known Subclasses:
PropGraphCumulative
public class PropCumulative extends Propagator<IntVar>
Cumulative propagator Performs energy checking and mandatory part based filtering BEWARE : not idempotent, use two propagators to get the fix point- Since:
- 31/01/13
- Author:
- Jean-Guillaume Fages
-
-
Field Summary
Fields Modifier and Type Field Description protected ISet
allTasks
protected IntVar
capa
protected IntVar[]
d
protected IntVar[]
e
protected CumulFilter[]
filters
protected IntVar[]
h
protected IStateInt
lastCapaMax
protected int
n
protected IntVar[]
s
-
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 Modifier Constructor Description protected
PropCumulative(IntVar[] s, IntVar[] d, IntVar[] e, IntVar[] h, IntVar capa, boolean reactToFineEvt, CumulFilter... filters)
protected constructor, should not be called by a userPropCumulative(IntVar[] s, IntVar[] d, IntVar[] e, IntVar[] h, IntVar capa, CumulFilter... filters)
Classical cumulative propagator
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
filter(ISet tasks)
int
getPropagationConditions(int idx)
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.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.protected void
propIni()
String
toString()
protected void
updateMaxCapa()
-
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, getVar, getVars, getVIndice, getVIndices, hashCode, isActive, isCompletelyInstantiated, isPassive, isReified, isReifiedAndSilent, isScheduled, isStateLess, linkVariables, propagate, reactToFineEvent, reifiedWith, setActive, setActive0, setPassive, setPosition, setReifiedSilent, setReifiedTrue, setVIndices, unlinkVariables, unschedule
-
-
-
-
Field Detail
-
n
protected final int n
-
s
protected final IntVar[] s
-
d
protected final IntVar[] d
-
e
protected final IntVar[] e
-
h
protected final IntVar[] h
-
capa
protected final IntVar capa
-
filters
protected CumulFilter[] filters
-
allTasks
protected ISet allTasks
-
lastCapaMax
protected final IStateInt lastCapaMax
-
-
Constructor Detail
-
PropCumulative
protected PropCumulative(IntVar[] s, IntVar[] d, IntVar[] e, IntVar[] h, IntVar capa, boolean reactToFineEvt, CumulFilter... filters)
protected constructor, should not be called by a user
-
PropCumulative
public PropCumulative(IntVar[] s, IntVar[] d, IntVar[] e, IntVar[] h, IntVar capa, CumulFilter... filters)
Classical cumulative propagator- Parameters:
s
- start variablesd
- duration variablese
- end variablesh
- height variablescapa
- capacity variable (only reacts to instantiation events)filters
- filtering algorithm to use
-
-
Method Detail
-
getPropagationConditions
public int getPropagationConditions(int idx)
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
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:
idx
- index of the variable within the propagator- Returns:
- an int composed of
REMOVE
and/orINSTANTIATE
and/orDECUPP
and/orINCLOW
-
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.
-
propIni
protected void propIni() throws ContradictionException
- Throws:
ContradictionException
-
updateMaxCapa
protected void updateMaxCapa() throws ContradictionException
- Throws:
ContradictionException
-
filter
public void filter(ISet tasks) throws ContradictionException
- Throws:
ContradictionException
-
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
-
toString
public String toString()
- Overrides:
toString
in classPropagator<IntVar>
-
-