Module org.chocosolver
Class PropSignedClause
- java.lang.Object
-
- org.chocosolver.solver.constraints.Propagator<IntVar>
-
- org.chocosolver.solver.constraints.nary.clauses.PropSignedClause
-
- All Implemented Interfaces:
Comparable<Propagator>
,ICause
,Identity
public class PropSignedClause extends Propagator<IntVar>
This propagator manages a signed clause: a disjunction of unary membership constraints.Project: choco-solver.
- Since:
- 11/05/2018.
- Author:
- Charles Prud'homme
-
-
Field Summary
Fields Modifier and Type Field Description protected static byte
F2
Mask that indicates pos[1] as falselong
label
Store label of last activity-
Fields inherited from class org.chocosolver.solver.constraints.Propagator
ACTIVE, constraint, DEFAULT_EXPL, model, operations, OUTPUT_DEFAULT_EXPL, priority, reactToFineEvt, state, vars
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
cardinality()
void
explain(ExplanationForSignedClause explanation, ValueSortedMap<IntVar> front, Implications ig, int p)
Clausal explanation for this cause.void
forceActivation()
int
getPropagationConditions(int vIdx)
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.static PropSignedClause
makeFromIn(IntVar[] vars, IntIterableRangeSet[] ranges)
Create aPropSignedClause
instance considering that 'ranges' are allowed:static PropSignedClause
makeFromOut(IntVar[] vars, IntIterableRangeSet[] ranges)
Create aPropSignedClause
instance considering that 'ranges' are forbidden:void
propagate(int evtmask)
Call the main filtering algorithm to apply to theDomain
of theVariable
objects.String
toString()
-
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, propagate, reactToFineEvent, reifiedWith, setActive, setActive0, setPassive, setPosition, setReifiedSilent, setReifiedTrue, setVIndices, unlinkVariables, unschedule
-
-
-
-
Field Detail
-
F2
protected static final byte F2
Mask that indicates pos[1] as false- See Also:
- Constant Field Values
-
label
public long label
Store label of last activity
-
-
Method Detail
-
makeFromIn
public static PropSignedClause makeFromIn(IntVar[] vars, IntIterableRangeSet[] ranges)
Create aPropSignedClause
instance considering that 'ranges' are allowed: ( ... ∨ vars[i] ∈ ranges[i] ∨ ... )- Parameters:
vars
- set of variablesranges
- set of allowed ranges- Returns:
- a instance of
PropSignedClause
-
makeFromOut
public static PropSignedClause makeFromOut(IntVar[] vars, IntIterableRangeSet[] ranges)
Create aPropSignedClause
instance considering that 'ranges' are forbidden: ( ... ∨ vars[i] ∉ ranges[i] ∨ ... )- Parameters:
vars
- set of variablesranges
- set of allowed ranges- Returns:
- a instance of
PropSignedClause
-
getPropagationConditions
public final int getPropagationConditions(int vIdx)
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:
vIdx
- index of the variable within the propagator- Returns:
- an int composed of
REMOVE
and/orINSTANTIATE
and/orDECUPP
and/orINCLOW
-
forceActivation
public void forceActivation()
-
cardinality
public final int cardinality()
- Returns:
- the number of literals in this
-
propagate
public final 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.
-
isEntailed
public final 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
-
explain
public void explain(ExplanationForSignedClause explanation, ValueSortedMap<IntVar> front, Implications ig, int p)
Description copied from interface:ICause
Clausal explanation for this cause.This method must filled explanations with inferred literals. These literals are inferred from the analysis of (a subset of) conflicting nodes stored in front, the implication graph ig and the current node in conflict, not yet contained in front.
Optionally, this method can update front by looking for a predecessor of any node that seems more relevant than the declared one.
- Specified by:
explain
in interfaceICause
- Overrides:
explain
in classPropagator<IntVar>
- Parameters:
explanation
- explanation to computefront
- ordered map of (variable,node> in the conflict frontier of the implication graph.ig
- an implication graphp
- the pivot node out of front
-
toString
public String toString()
- Overrides:
toString
in classPropagator<IntVar>
-
-