choco.palm.dbt.integer
Class PalmIntervalIntDomain

java.lang.Object
  extended by choco.AbstractEntity
      extended by choco.integer.var.AbstractIntDomain
          extended by choco.integer.var.IntervalIntDomain
              extended by choco.palm.dbt.integer.PalmIntervalIntDomain
All Implemented Interfaces:
Entity, IntDomain, PalmIntDomain, ExplainedDomain, ExplainedIntDomain

public class PalmIntervalIntDomain
extends IntervalIntDomain
implements PalmIntDomain


Nested Class Summary
 
Nested classes/interfaces inherited from class choco.integer.var.AbstractIntDomain
AbstractIntDomain.IntDomainIterator
 
Field Summary
protected  java.util.Hashtable decisionConstraints
          Decision constraints on the variable for branching purpose.
protected  java.util.LinkedList explanationOnInf
          A stack of explanations for lower bound modifications.
protected  java.util.LinkedList explanationOnSup
          A stack of explanations for upper bound modifications.
protected  java.util.Hashtable negDecisionConstraints
          Negation of decision constraints on the variable for branching purpose.
protected  int originalInf
          Original lower bound.
protected  int originalSup
          Original upper bound.
 
Fields inherited from class choco.integer.var.IntervalIntDomain
inf, random, sup
 
Fields inherited from class choco.integer.var.AbstractIntDomain
currentInfPropagated, currentSupPropagated, logger, variable
 
Fields inherited from class choco.AbstractEntity
hook, problem
 
Fields inherited from interface choco.palm.dbt.integer.PalmIntDomain
DOM, INF, SUP, VAL
 
Constructor Summary
PalmIntervalIntDomain(IntDomainVarImpl v, int a, int b)
          Builds a interval domain for the specified variable.
 
Method Summary
 int[] getAllValues()
          Returns all the value currently in the domain.
 Constraint getDecisionConstraint(int val)
          Returns the decision constraint assigning the domain to the specified value.
 Constraint getNegDecisionConstraint(int val)
          Returns the negated decision constraint.
 int getOriginalInf()
          Returns the original lower bound.
 int getOriginalSup()
          Returns the original upper bound.
 boolean removeVal(int value, int idx, Explanation e)
          Removes a value and posts the event.
 void resetExplanationOnInf()
          When a lower bound is restored, it deletes the explanation associated to the value removal.
 void resetExplanationOnSup()
          When an upper bound is restored, it deletes the explanation associated to the value removal.
 void resetExplanationOnVal(int val)
          When a value is restored, it deletes the explanation associated to the value removal.
 void restoreInf(int newValue)
          Restores a lower bound and posts the event.
 void restoreSup(int newValue)
          Restores an upper bound and posts the event.
 void restoreVal(int val)
          Restores a value and posts the event.
 void self_explain(int select, Explanation expl)
          Allows to get an explanation for the domain or a bound of the variable.
 void self_explain(int select, int x, Explanation expl)
          Allows to get an explanation for a value removal from the variable.
protected  boolean updateInf(int x, Explanation e)
           
 boolean updateInf(int x, int idx, Explanation e)
          Updates the lower bound and posts the event.
protected  boolean updateSup(int x, Explanation e)
           
 boolean updateSup(int x, int idx, Explanation e)
          Updates the upper bound and posts the event.
 
Methods inherited from class choco.integer.var.IntervalIntDomain
_removeVal, contains, getDeltaIterator, getInf, getIterator, getNextValue, getPrevValue, getRandomValue, getSize, getSup, hasNextValue, hasPrevValue, isEnumerated, pretty, remove, restrict, updateInf, updateSup
 
Methods inherited from class choco.integer.var.AbstractIntDomain
_instantiate, _updateInf, _updateSup, clearDeltaDomain, freezeDeltaDomain, getReleasedDeltaDomain, instantiate, releaseDeltaDomain, removeInterval, removeVal, updateInf, updateSup
 
Methods inherited from class choco.AbstractEntity
getProblem
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface choco.integer.var.IntDomain
clearDeltaDomain, contains, freezeDeltaDomain, getDeltaIterator, getInf, getIterator, getNextValue, getPrevValue, getRandomValue, getReleasedDeltaDomain, getSize, getSup, hasNextValue, hasPrevValue, isEnumerated, releaseDeltaDomain, remove, restrict, updateInf, updateSup
 
Methods inherited from interface choco.Entity
getProblem, pretty
 

Field Detail

explanationOnInf

protected final java.util.LinkedList explanationOnInf
A stack of explanations for lower bound modifications.


explanationOnSup

protected final java.util.LinkedList explanationOnSup
A stack of explanations for upper bound modifications.


decisionConstraints

protected final java.util.Hashtable decisionConstraints
Decision constraints on the variable for branching purpose.


negDecisionConstraints

protected final java.util.Hashtable negDecisionConstraints
Negation of decision constraints on the variable for branching purpose.


originalInf

protected final int originalInf
Original lower bound.


originalSup

protected final int originalSup
Original upper bound.

Constructor Detail

PalmIntervalIntDomain

public PalmIntervalIntDomain(IntDomainVarImpl v,
                             int a,
                             int b)
Builds a interval domain for the specified variable.

Parameters:
v - Involved variable.
a - Lower bound.
b - Upper bound.
Method Detail

getOriginalInf

public int getOriginalInf()
Returns the original lower bound.

Specified by:
getOriginalInf in interface ExplainedDomain

getOriginalSup

public int getOriginalSup()
Returns the original upper bound.

Specified by:
getOriginalSup in interface ExplainedDomain

getAllValues

public int[] getAllValues()
Returns all the value currently in the domain.

Specified by:
getAllValues in interface ExplainedIntDomain

getDecisionConstraint

public Constraint getDecisionConstraint(int val)
Returns the decision constraint assigning the domain to the specified value. The constraint is created if it is not yet created.

Specified by:
getDecisionConstraint in interface PalmIntDomain

getNegDecisionConstraint

public Constraint getNegDecisionConstraint(int val)
Returns the negated decision constraint.

Specified by:
getNegDecisionConstraint in interface PalmIntDomain

updateSup

public boolean updateSup(int x,
                         int idx,
                         Explanation e)
                  throws ContradictionException
Updates the upper bound and posts the event.

Specified by:
updateSup in interface PalmIntDomain
Specified by:
updateSup in interface ExplainedIntDomain
Throws:
ContradictionException

updateInf

public boolean updateInf(int x,
                         int idx,
                         Explanation e)
                  throws ContradictionException
Updates the lower bound and posts the event.

Specified by:
updateInf in interface PalmIntDomain
Specified by:
updateInf in interface ExplainedIntDomain
Throws:
ContradictionException

removeVal

public boolean removeVal(int value,
                         int idx,
                         Explanation e)
                  throws ContradictionException
Removes a value and posts the event.

Specified by:
removeVal in interface PalmIntDomain
Specified by:
removeVal in interface ExplainedIntDomain
Throws:
ContradictionException

restoreInf

public void restoreInf(int newValue)
Restores a lower bound and posts the event.

Specified by:
restoreInf in interface PalmIntDomain

restoreSup

public void restoreSup(int newValue)
Restores an upper bound and posts the event.

Specified by:
restoreSup in interface PalmIntDomain

restoreVal

public void restoreVal(int val)
Restores a value and posts the event. Not supported for such a domain.

Specified by:
restoreVal in interface PalmIntDomain

self_explain

public void self_explain(int select,
                         Explanation expl)
Allows to get an explanation for the domain or a bound of the variable. This explanation is merge to the explanation in parameter.

Specified by:
self_explain in interface PalmIntDomain
Specified by:
self_explain in interface ExplainedDomain
Parameters:
select - Should be PalmIntDomain.INF, PalmIntDomain.SUP, or PalmIntDomain.DOM

self_explain

public void self_explain(int select,
                         int x,
                         Explanation expl)
Allows to get an explanation for a value removal from the variable. This explanation is merge to the explanation in parameter.

Specified by:
self_explain in interface PalmIntDomain
Specified by:
self_explain in interface ExplainedIntDomain
Parameters:
select - Should be PalmIntDomain.VAL

resetExplanationOnVal

public void resetExplanationOnVal(int val)
When a value is restored, it deletes the explanation associated to the value removal.

Specified by:
resetExplanationOnVal in interface PalmIntDomain

resetExplanationOnInf

public void resetExplanationOnInf()
When a lower bound is restored, it deletes the explanation associated to the value removal.

Specified by:
resetExplanationOnInf in interface PalmIntDomain

resetExplanationOnSup

public void resetExplanationOnSup()
When an upper bound is restored, it deletes the explanation associated to the value removal.

Specified by:
resetExplanationOnSup in interface PalmIntDomain

updateSup

protected boolean updateSup(int x,
                            Explanation e)

updateInf

protected boolean updateInf(int x,
                            Explanation e)