Module org.chocosolver
Class PropGraphCumulative
- java.lang.Object
-
- org.chocosolver.solver.constraints.Propagator<IntVar>
-
- org.chocosolver.solver.constraints.nary.cumulative.PropCumulative
-
- org.chocosolver.solver.constraints.nary.cumulative.PropGraphCumulative
-
- All Implemented Interfaces:
Comparable<Propagator>
,ICause
,Identity
public class PropGraphCumulative extends PropCumulative
Graph based cumulative Maintains incrementally overlapping tasks 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 inherited from class org.chocosolver.solver.constraints.nary.cumulative.PropCumulative
allTasks, capa, d, e, filters, h, lastCapaMax, n, 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 Constructor Description PropGraphCumulative(IntVar[] s, IntVar[] d, IntVar[] e, IntVar[] h, IntVar capa, boolean fast, CumulFilter... filters)
Graph-based cumulative propagator: - only filters over subsets of overlapping tasks
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
filterAround(int taskIndex)
void
propagate(int evtmask)
Call the main filtering algorithm to apply to theDomain
of theVariable
objects.void
propagate(int varIdx, 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.nary.cumulative.PropCumulative
filter, getPropagationConditions, isEntailed, propIni, toString, 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, reactToFineEvent, reifiedWith, setActive, setActive0, setPassive, setPosition, setReifiedSilent, setReifiedTrue, setVIndices, unlinkVariables, unschedule
-
-
-
-
Constructor Detail
-
PropGraphCumulative
public PropGraphCumulative(IntVar[] s, IntVar[] d, IntVar[] e, IntVar[] h, IntVar capa, boolean fast, CumulFilter... filters)
Graph-based cumulative propagator: - only filters over subsets of overlapping tasks- Parameters:
s
- start variablesd
- duration variablese
- end variablesh
- height variablescapa
- capacity variablefast
- reduces the number of propagation (less filtering)filters
- filtering algorithm to use
-
-
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.- Overrides:
propagate
in classPropCumulative
- 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 varIdx, 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:
varIdx
- index of the variablevar
inthis
mask
- type of event- Throws:
ContradictionException
- if a contradiction occurs
-
filterAround
protected void filterAround(int taskIndex) throws ContradictionException
- Throws:
ContradictionException
-
-