- java.lang.Object
-
- org.chocosolver.solver.constraints.Propagator<IntVar>
-
- org.chocosolver.sat.PropNogoods
-
- All Implemented Interfaces:
Comparable<Propagator>
,ICause
,Identity
public class PropNogoods extends Propagator<IntVar>
A propagator to store and propagate no-goods. Created by cprudhom on 20/01/15. Project: choco.- 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 PropNogoods(Model model)
Create a (unique) propagator for no-goods recording and propagation.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addLearnt(int... lits)
Add learnt clause to no-goods storeboolean
addNogood(int p)
Add unit clause to no-goods storeboolean
addNogood(gnu.trove.list.TIntList lits)
Add unit clause to no-goods storevoid
initialize()
Initializes this propagatorESat
isEntailed()
Check wetherthis
is entailed according to the current state of its internal structure.int
Literal(IntVar ivar, int value, boolean eq)
Creates or returns if already existing, the literal corresponding to :void
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.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, reactToFineEvent, reifiedWith, setActive, setActive0, setPassive, setPosition, setReifiedSilent, setReifiedTrue, setVIndices, toString, unlinkVariables, unschedule
-
-
-
-
Constructor Detail
-
PropNogoods
public PropNogoods(Model model)
Create a (unique) propagator for no-goods recording and propagation.- Parameters:
model
- the model that declares the propagator
-
-
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<IntVar>
- 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
-
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
-
initialize
public void initialize()
Initializes this propagator
-
Literal
public int Literal(IntVar ivar, int value, boolean eq)
Creates or returns if already existing, the literal corresponding to :ivar
(eq
?"=":"<=")value
where "=" is selected if
eq
is true, "<=" otherwise.The negation of the literal is managed outside.
- Parameters:
ivar
- an integer variablevalue
- a valueeq
- set to true to select "=", to false to select "<=".- Returns:
- the literal corresponding to
ivar
(eq
?"=":"<=")value
-
addNogood
public boolean addNogood(int p)
Add unit clause to no-goods store- Parameters:
p
- unit clause- Returns:
- false if failure is detected
-
addNogood
public boolean addNogood(gnu.trove.list.TIntList lits)
Add unit clause to no-goods store- Parameters:
lits
- clause- Returns:
- false if failure is detected
-
addLearnt
public void addLearnt(int... lits)
Add learnt clause to no-goods store- Parameters:
lits
- clause
-
-