choco.palm.global.matching
Class PalmCardinality
java.lang.Object
choco.AbstractEntity
choco.AbstractConstraint
choco.integer.constraints.AbstractIntConstraint
choco.integer.constraints.AbstractLargeIntConstraint
choco.global.matching.AbstractBipartiteGraph
choco.global.matching.AbstractBipartiteFlow
choco.global.matching.GlobalCardinality
choco.palm.global.matching.PalmCardinality
- All Implemented Interfaces:
- Constraint, Entity, IntConstraint, IntVarEventListener, PalmIntVarListener, PalmConstraint, PalmVarListener, VarEventListener, Propagator, java.lang.Cloneable, java.util.EventListener
public class PalmCardinality
- extends GlobalCardinality
- implements PalmConstraint, PalmIntVarListener
Fields inherited from class choco.global.matching.AbstractBipartiteGraph |
component, componentOrder, currentComponent, currentNode, finishDate, left2rightArc, matchingSize, maxValue, minValue, nbLeftVertices, nbRightVertices, nbVertices, queue, refMatch, right2leftArc, seen, source, time |
Method Summary |
void |
augmentFlow()
keeps augmenting the flow until a maximal flow is reached |
void |
awake()
performing the initial propagation, reduce variables domain to the candidate assign values |
void |
awakeOnRem(int idx,
int val)
Implement reaction to edge removal |
void |
awakeOnRestoreInf(int idx)
Handles an inf bound restoration on the constraint idx |
void |
awakeOnRestoreSup(int idx)
Handles a sup bound restoration on the constraint idx |
void |
awakeOnRestoreVal(int idx,
int val)
Handles a val restoration on the constraint idx |
void |
awakeOnRestoreVal(int idx,
IntIterator it)
Handles a val restoration on the constraint idx |
java.lang.Object |
clone()
returns a copy of the constraint. |
void |
deleteEdgeAndPublish(int i,
int j)
implement one of the two main events:
when an edge is definitely removed from the bipartite assignment graph |
void |
takeIntoAccountStatusChange(int index)
Informs constraints that one of their children has a modified status (due to value restoration). |
void |
updateDataStructuresOnConstraint(int idx,
int select,
int newValue,
int oldValue)
Method called when one of the variables is modified. |
void |
updateDataStructuresOnRestoreConstraint(int idx,
int select,
int newValue,
int oldValue)
Method called when one of the variables has a restored value. |
java.util.Set |
whyIsFalse()
When all variables are instantiated, explains why the wonstraint is false. |
java.util.Set |
whyIsTrue()
When all variables are instantiated, explains why the wonstraint is true. |
Methods inherited from class choco.global.matching.AbstractBipartiteFlow |
augment, decreaseMatchingSize, deleteMatch, findAlternatingPath, increaseMatchingSize, initAbstractBipartiteFlow, mayDiminishFlowFromSource, mayGrowFlowFromSource, mustGrowFlowFromSource, putRefMatch, setMatch |
Methods inherited from class choco.global.matching.AbstractBipartiteGraph |
addComponentEdge, addComponentVertex, firstDFSearch, firstPassDFS, getPriority, init, initSCCGraph, match, mayDiminishFlowBetween, mayGrowFlowBetween, mayGrowFlowToSink, mayInverseMatch, mayMatch, propagate, removeUselessEdges, secondDFSearch, secondPassDFS |
Methods inherited from class choco.AbstractConstraint |
addListener, connectVar, constAwake, delete, fail, getEvent, getPlugIn, getProblem, getVarIdxInOpposite, isActive, isEntailed, isEquivalentTo, opposite, setActive, setEntailed, setPassive, setPlugIn, substituteVar |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface choco.Propagator |
assignIndices, awakeOnVar, constAwake, delete, getEvent, getPlugIn, getPriority, isCompletelyInstantiated, isConsistent, isEntailed, propagate |
PalmCardinality
public PalmCardinality(IntDomainVar[] vars,
int minValue,
int maxValue,
int[] low,
int[] up)
PalmCardinality
public PalmCardinality(IntDomainVar[] vars,
int[] low,
int[] up)
clone
public java.lang.Object clone()
throws java.lang.CloneNotSupportedException
- Description copied from interface:
Constraint
- returns a copy of the constraint. This copy is a new object, may be a recursive copy in case
of composite constraints. The original and the copy share the same variables & plugins
- Specified by:
clone
in interface Constraint
- Overrides:
clone
in class GlobalCardinality
- Returns:
-
- Throws:
java.lang.CloneNotSupportedException
deleteEdgeAndPublish
public void deleteEdgeAndPublish(int i,
int j)
throws ContradictionException
- Description copied from class:
GlobalCardinality
- implement one of the two main events:
when an edge is definitely removed from the bipartite assignment graph
- Overrides:
deleteEdgeAndPublish
in class GlobalCardinality
- Parameters:
i
- the variable to unmatchj
- the value to remove
- Throws:
ContradictionException
takeIntoAccountStatusChange
public void takeIntoAccountStatusChange(int index)
- Description copied from interface:
PalmConstraint
- Informs constraints that one of their children has a modified status (due to value restoration).
- Specified by:
takeIntoAccountStatusChange
in interface PalmConstraint
updateDataStructuresOnConstraint
public void updateDataStructuresOnConstraint(int idx,
int select,
int newValue,
int oldValue)
- Description copied from interface:
PalmVarListener
- Method called when one of the variables is modified.
- Specified by:
updateDataStructuresOnConstraint
in interface PalmVarListener
- Parameters:
idx
- Index of the variable.select
- Type of modification (PalmIntVar.INF
, PalmIntVar.SUP
,
PalmIntVar.VAL
).newValue
- New value (or modified value).oldValue
- Old value (or 0 if this a value removal).
updateDataStructuresOnRestoreConstraint
public void updateDataStructuresOnRestoreConstraint(int idx,
int select,
int newValue,
int oldValue)
- Description copied from interface:
PalmVarListener
- Method called when one of the variables has a restored value.
- Specified by:
updateDataStructuresOnRestoreConstraint
in interface PalmVarListener
- Parameters:
idx
- Index of the variable.select
- Type of modification.newValue
- New value (or modified value).oldValue
- Old value (or 0 if this a value removal).
awakeOnRem
public void awakeOnRem(int idx,
int val)
- Description copied from class:
GlobalCardinality
- Implement reaction to edge removal
- Specified by:
awakeOnRem
in interface IntVarEventListener
- Overrides:
awakeOnRem
in class GlobalCardinality
- Parameters:
idx
- variable indexval
- value to remove
awakeOnRestoreInf
public void awakeOnRestoreInf(int idx)
throws ContradictionException
- Description copied from interface:
PalmIntVarListener
- Handles an inf bound restoration on the constraint
idx
- Specified by:
awakeOnRestoreInf
in interface PalmIntVarListener
- Parameters:
idx
- Variable involved.
- Throws:
ContradictionException
awakeOnRestoreSup
public void awakeOnRestoreSup(int idx)
throws ContradictionException
- Description copied from interface:
PalmIntVarListener
- Handles a sup bound restoration on the constraint
idx
- Specified by:
awakeOnRestoreSup
in interface PalmIntVarListener
- Parameters:
idx
- Variable involved.
- Throws:
ContradictionException
awakeOnRestoreVal
public void awakeOnRestoreVal(int idx,
int val)
throws ContradictionException
- Description copied from interface:
PalmIntVarListener
- Handles a val restoration on the constraint
idx
- Specified by:
awakeOnRestoreVal
in interface PalmIntVarListener
- Parameters:
idx
- Variable involved.
- Throws:
ContradictionException
awakeOnRestoreVal
public void awakeOnRestoreVal(int idx,
IntIterator it)
throws ContradictionException
- Description copied from interface:
PalmIntVarListener
- Handles a val restoration on the constraint
idx
- Specified by:
awakeOnRestoreVal
in interface PalmIntVarListener
- Parameters:
idx
- Variable involved.
- Throws:
ContradictionException
awake
public void awake()
throws ContradictionException
- Description copied from class:
GlobalCardinality
- performing the initial propagation, reduce variables domain to the candidate assign values
- Specified by:
awake
in interface Propagator
- Overrides:
awake
in class GlobalCardinality
- Throws:
ContradictionException
whyIsTrue
public java.util.Set whyIsTrue()
- Description copied from interface:
PalmIntVarListener
- When all variables are instantiated, explains why the wonstraint is true.
- Specified by:
whyIsTrue
in interface PalmIntVarListener
- Returns:
- A set of constraint justifying that the constraint is satisfied.
whyIsFalse
public java.util.Set whyIsFalse()
- Description copied from interface:
PalmIntVarListener
- When all variables are instantiated, explains why the wonstraint is false.
- Specified by:
whyIsFalse
in interface PalmIntVarListener
- Returns:
- A set of constraint justifying that the constraint is not satisfied.
augmentFlow
public void augmentFlow()
throws ContradictionException
- Description copied from class:
AbstractBipartiteGraph
- keeps augmenting the flow until a maximal flow is reached
- Overrides:
augmentFlow
in class AbstractBipartiteGraph
- Throws:
ContradictionException