V
- VariableT
- Valuepublic class DbtPropagation<V extends Variable<V,T>,T extends Value<V,T>> extends MacPropagation<V,T> implements SolverListener<V,T>
MacPropagation
and this DBT propagation is
that all not-assigned values of an assigned variable are marked as nogood.
Also, when a dead end is reached, unassignment or failure takes place. MacPropagation.NoGood
iConstraints, iIteration
sMaxSize
Constructor and Description |
---|
DbtPropagation(Solver<V,T> solver,
DataProperties properties)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
afterAssigned(Assignment<V,T> assignment,
long iteration,
T value)
Propagation takes place every time a value is assigned to a variable.
|
void |
afterUnassigned(Assignment<V,T> assignment,
long iteration,
T value)
Undo propagation when a value is unassigned.
|
void |
neighbourFailed(Assignment<V,T> assignment,
long iteration,
Neighbour<V,T> neighbour)
Called when
ParallelSolver failed to assign the given neighbour |
boolean |
neighbourSelected(Assignment<V,T> assignment,
long iteration,
Neighbour<V,T> neighbour)
A neighbour was selected
|
boolean |
valueSelected(Assignment<V,T> assignment,
long iteration,
V variable,
T value)
If no value is selected (because of a dead end), make some unassignments.
|
boolean |
variableSelected(Assignment<V,T> assignment,
long iteration,
V variable)
If no variable is selected (all variables are assinged), unassign the
last assigned variable.
|
addConstraint, beforeAssigned, contains, createAssignmentContext, goodValues, isGood, noGood, propagate, setGood, setNoGood, undoPropagate
getAssignmentContextReference, getContext, getContext, init, setAssignmentContextReference, unregister
beforeUnassigned, constraintAdded, constraintRemoved, getModel, getProperties, getSolver, isRegistered, register, variableAdded, variableRemoved
public DbtPropagation(Solver<V,T> solver, DataProperties properties)
solver
- current solverproperties
- solver configurationpublic void afterAssigned(Assignment<V,T> assignment, long iteration, T value)
afterAssigned
in interface ModelListener<V extends Variable<V,T>,T extends Value<V,T>>
afterAssigned
in class MacPropagation<V extends Variable<V,T>,T extends Value<V,T>>
assignment
- current assignmentiteration
- current iterationvalue
- value to be assignedMacPropagation.propagate(Assignment, Variable)
public void afterUnassigned(Assignment<V,T> assignment, long iteration, T value)
afterUnassigned
in interface ModelListener<V extends Variable<V,T>,T extends Value<V,T>>
afterUnassigned
in class MacPropagation<V extends Variable<V,T>,T extends Value<V,T>>
assignment
- current assignmentiteration
- current iterationvalue
- value to be unassignedMacPropagation.undoPropagate(Assignment, Variable)
public boolean variableSelected(Assignment<V,T> assignment, long iteration, V variable)
DbtVariableSelection
):
variableSelected
in interface SolverListener<V extends Variable<V,T>,T extends Value<V,T>>
assignment
- current assignmentiteration
- current iterationvariable
- selected variableDbtVariableSelection.selectVariable(Solution)
public boolean valueSelected(Assignment<V,T> assignment, long iteration, V variable, T value)
DbtValueSelection
),
(explanation for that is the computed union of explanations without the last assignment).
valueSelected
in interface SolverListener<V extends Variable<V,T>,T extends Value<V,T>>
assignment
- current assignmentiteration
- current iterationvariable
- selected variablevalue
- selected variableDbtVariableSelection.selectVariable(Solution)
public boolean neighbourSelected(Assignment<V,T> assignment, long iteration, Neighbour<V,T> neighbour)
SolverListener
neighbourSelected
in interface SolverListener<V extends Variable<V,T>,T extends Value<V,T>>
assignment
- current assignmentiteration
- current iterationneighbour
- neighbourpublic void neighbourFailed(Assignment<V,T> assignment, long iteration, Neighbour<V,T> neighbour)
SolverListener
ParallelSolver
failed to assign the given neighbourneighbourFailed
in interface SolverListener<V extends Variable<V,T>,T extends Value<V,T>>
assignment
- current assignmentiteration
- current iterationneighbour
- neighbour