Overview | Group | Tree | Graph | Index | Concepts |
The domain-delta is a special set where the modifications of the domain of a constrained variable are stored. This domain-delta can be accessed (by means of member functions of the class of the constrained variable) during the propagation of the constraints posted on that constrained variable. When all the constraints posted on that constrained variable have been processed, then the domain-delta is cleared. If the variable is modified again, then the whole process starts over again. The state of the domain-delta is reversible.
The domain-delta can be traversed by an iterator, an instance of
IlcAnyVarDeltaIterator
, IlcFloatVarDeltaIterator
, or IlcIntVarDeltaIterator
.
Delta Sets of Constrained Set Variables
When a propagation event is triggered for a constrained set variable
(that is, an instance of IlcIntSetVar
or
IlcAnySetVar
), the constrained set variable
is pushed into the constraint propagation queue if it was not already in the
queue. Moreover, modifications of the domain of the constrained set variable
are stored in two special sets, the delta sets (analogous to the
domain-delta of a constrained integer variable).
One delta set stores the values removed from the possible set of the constrained set variable, and it is known as the possible-delta set. The other delta set stores the values added to the required set of the constrained set variable, and it is known as the required-delta set.
Solver provides iterators to traverse the delta sets of a constrained set
variable. Those iterators are instances of the classes IlcIntDeltaPossibleIterator
, IlcIntDeltaRequiredIterator
, IlcAnyDeltaPossibleIterator
, or IlcAnyDeltaRequiredIterator
.
When all the constraints posted on that constrained set variable have been processed, then the delta sets are cleared. If the variable is modified again, then the whole process starts over again. The state of the delta sets is reversible.
The order in which elements of the delta sets are traversed is not predictable. Each newly removed element will be traversed only once.
See the concept Propagation for more information.
See Also
IlcAnyDeltaPossibleIterator , IlcAnyDeltaRequiredIterator, IlcAnySetVar, IlcAnyVarDeltaIterator, IlcFloatVarDeltaIterator, IlcIntDeltaPossibleIterator, IlcIntDeltaRequiredIterator, IlcIntSetVar, IlcIntVarDeltaIterator