Module org.chocosolver
Class PropSumFullBoolIncr
- java.lang.Object
-
- org.chocosolver.solver.constraints.Propagator<IntVar>
-
- org.chocosolver.solver.constraints.nary.sum.PropSum
-
- org.chocosolver.solver.constraints.nary.sum.PropSumFullBool
-
- org.chocosolver.solver.constraints.nary.sum.PropSumFullBoolIncr
-
- All Implemented Interfaces:
Comparable<Propagator>
,ICause
,Identity
public class PropSumFullBoolIncr extends PropSumFullBool
A propagator for SUM(x_i) = y + b, where x_i are boolean variables, maintained incrementally.
Based on "Bounds Consistency Techniques for Long Linear Constraint" W. Harvey and J. Schimpf- Since:
- 18/03/11
- Author:
- Charles Prud'homme
-
-
Field Summary
-
Fields inherited from class org.chocosolver.solver.constraints.nary.sum.PropSum
b, I, l, maxI, o, pos, sumLB, sumUB
-
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 PropSumFullBoolIncr(BoolVar[] variables, int pos, Operator o, int b)
Creates a sum propagator: SUM(x_i) Op b, where x_i are boolean variables, maintained incrementally.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected PropSum
opposite()
protected void
prepare()
Prepare the propagation: compute sumLB, sumUB and Ivoid
propagate(int evtmask)
Call the main filtering algorithm to apply to theDomain
of theVariable
objects.void
propagate(int idxVarInProp, 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.sum.PropSumFullBool
filterOnEq, filterOnGeq, filterOnLeq, getPropagationConditions, toString
-
Methods inherited from class org.chocosolver.solver.constraints.nary.sum.PropSum
check, computePriority, explain, explainGlobal, filter, filterOnNeq, isEntailed, nb, nop
-
Methods inherited from class org.chocosolver.solver.constraints.Propagator
addVariable, arity, compareTo, defaultExplain, doFinePropagation, doFlush, doSchedule, doScheduleEvent, dynPriority, equals, 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
-
PropSumFullBoolIncr
public PropSumFullBoolIncr(BoolVar[] variables, int pos, Operator o, int b)
Creates a sum propagator: SUM(x_i) Op b, where x_i are boolean variables, maintained incrementally. Coefficients are induced bypos
: those beforepos
(included) are equal to 1, the other ones are equal to -1.- Parameters:
variables
- list of boolean variablespos
- position of the last positive (induced) coefficiento
- operatorb
- bound to respect
-
-
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 classPropSum
- 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 idxVarInProp, 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:
idxVarInProp
- index of the variablevar
inthis
mask
- type of event- Throws:
ContradictionException
- if a contradiction occurs
-
prepare
protected void prepare()
Description copied from class:PropSum
Prepare the propagation: compute sumLB, sumUB and I- Overrides:
prepare
in classPropSumFullBool
-
opposite
protected PropSum opposite()
- Overrides:
opposite
in classPropSumFullBool
-
-