choco.palm.dbt.integer
Class PalmBitSetIntDomain

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

public class PalmBitSetIntDomain
extends BitSetIntDomain
implements PalmIntDomain


Nested Class Summary
protected  class PalmBitSetIntDomain.RepairIntDomainIterator
           
 
Nested classes/interfaces inherited from class choco.integer.var.BitSetIntDomain
BitSetIntDomain.DeltaIntDomainIterator
 
Nested classes/interfaces inherited from class choco.integer.var.AbstractIntDomain
AbstractIntDomain.IntDomainIterator
 
Field Summary
 Constraint[] decisionConstraints
          Decision constraints on the variable for branching purpose.
 IRemovalExplanation[] explanationOnVal
          A list of explanations for value withdrawals.
 Constraint[] negDecisionConstraints
          Negation of decision constraints on the variable for branching purpose.
 java.util.BitSet originalDomain
          original domain of the variable
 
Fields inherited from class choco.integer.var.BitSetIntDomain
capacity, chain, contents, firstIndexBeingPropagated, firstIndexToBePropagated, offset, random, size
 
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
PalmBitSetIntDomain(IntDomainVarImpl v, int[] sortedValues)
          constructor with a set of discrete values
PalmBitSetIntDomain(IntDomainVarImpl v, int a, int b)
           
 
Method Summary
 void checkRemovalChain()
          When restoration are raised, some value removal can be inappropiate.
 boolean contains(int val)
          Checks if the value is in the domain.
 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.
 IntIterator getRepairIterator()
          Returns an iterator on restored values.
 void releaseRepairDomain()
          If restoration handling completes, the chain must reinitlized to null.
protected  boolean removeVal(int value, Explanation e)
           
 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 resetRemovalChain()
          If a contradiction occure during restoration handling, the chain must be reinitialized in the previous state.
 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.
 boolean updateInf(int x, int idx, Explanation e)
          Updates the lower bound and posts the event.
 boolean updateSup(int x, int idx, Explanation e)
          Updates the upper bound and posts the event.
 
Methods inherited from class choco.integer.var.BitSetIntDomain
clearDeltaDomain, freezeDeltaDomain, getDeltaIterator, getInf, getNextValue, getPrevValue, getRandomValue, getReleasedDeltaDomain, getSize, getSup, hasNextValue, hasPrevValue, isEnumerated, pretty, releaseDeltaDomain, remove, restrict, toString, updateInf, updateSup
 
Methods inherited from class choco.integer.var.AbstractIntDomain
_instantiate, _removeVal, _updateInf, _updateSup, getIterator, instantiate, 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, wait, wait, wait
 
Methods inherited from interface choco.integer.var.IntDomain
clearDeltaDomain, 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

explanationOnVal

public IRemovalExplanation[] explanationOnVal
A list of explanations for value withdrawals.


decisionConstraints

public Constraint[] decisionConstraints
Decision constraints on the variable for branching purpose.


negDecisionConstraints

public Constraint[] negDecisionConstraints
Negation of decision constraints on the variable for branching purpose.


originalDomain

public java.util.BitSet originalDomain
original domain of the variable

Constructor Detail

PalmBitSetIntDomain

public PalmBitSetIntDomain(IntDomainVarImpl v,
                           int a,
                           int b)

PalmBitSetIntDomain

public PalmBitSetIntDomain(IntDomainVarImpl v,
                           int[] sortedValues)
constructor with a set of discrete values

Parameters:
v -
sortedValues -
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

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

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

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.

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

checkRemovalChain

public void checkRemovalChain()
When restoration are raised, some value removal can be inappropiate. This removes such past events.


resetRemovalChain

public void resetRemovalChain()
If a contradiction occure during restoration handling, the chain must be reinitialized in the previous state.


releaseRepairDomain

public void releaseRepairDomain()
If restoration handling completes, the chain must reinitlized to null.


getRepairIterator

public IntIterator getRepairIterator()
Returns an iterator on restored values.


contains

public boolean contains(int val)
Checks if the value is in the domain. Basically it checks if the value is in the original domain and if this case only calls the super method.

Specified by:
contains in interface IntDomain
Overrides:
contains in class BitSetIntDomain
Parameters:
val - The value to check.

removeVal

protected boolean removeVal(int value,
                            Explanation e)