public class ConflictStatistics<V extends Variable<V,T>,T extends Value<V,T>> extends Extension<V,T> implements ConstraintListener<T>
VariableSelection.selectVariable(Solution)
function and a value va
selected by ValueSelection.selectValue(Solution, Variable)
. Once the
assignment Vb = vb is selected by Model.conflictValues(Value)
to be
unassigned, the array cell CBS[Va = va, Vb != vb] is incremented by one. Parameter | Type | Comment |
---|---|---|
ConflictStatistics.Ageing | Double |
Ageing of the conflict-based statistics. Every memorized conflict is aged (multiplited) by this factor for every iteration which passed from the time it was memorized. For instance, if there was a conflict 10 iterations ago, its value is ageing^10 (default is 1.0 -- no ageing). |
ConflictStatistics.AgeingHalfTime | Integer |
Another way how to express ageing: number of iterations to decrease a conflict to 1/2 (default is 0 -- no ageing) |
Solver
,
Model
,
ValueSelection
,
VariableSelection
Constructor and Description |
---|
ConflictStatistics(Solver<V,T> solver,
DataProperties properties) |
Modifier and Type | Method and Description |
---|---|
void |
constraintAdded(Constraint<V,T> constraint)
Called when a constraint is added to the model
|
void |
constraintAfterAssigned(long iteration,
Constraint<?,T> constraint,
T assigned,
Set<T> unassigned)
Increments appropriate counters when there is a value unassigned
|
void |
constraintBeforeAssigned(long iteration,
Constraint<?,T> constraint,
T assigned,
Set<T> unassigned)
Called by the constraint, before a value is assigned to its variable.
|
void |
constraintRemoved(Constraint<V,T> constraint)
Called when a constraint is removed from the model
|
long |
countPotentialConflicts(long iteration,
T value,
int limit)
Counts potential number of unassignments of if the given value is
selected.
|
double |
countRemovals(long iteration,
Collection<T> conflictValues,
T value)
Counts number of unassignments of the given conflicting values caused by
the assignment of the given value.
|
double |
countRemovals(long iteration,
T conflictValue,
T value)
Counts number of unassignments of the given conflicting value caused by
the assignment of the given value.
|
Map<Assignment<T>,List<Assignment<T>>> |
getNoGoods() |
void |
register(Model<V,T> model)
Registration of a model.
|
void |
reset() |
String |
toString() |
void |
unregister(Model<V,T> model)
Unregistration of a model.
|
void |
variableUnassigned(long iteration,
T unassignedValue,
T assignedValue) |
afterAssigned, afterUnassigned, beforeAssigned, beforeUnassigned, getModel, getProperties, getSolver, init, isRegistered, useValueExtra, useVariableExtra, variableAdded, variableRemoved
public ConflictStatistics(Solver<V,T> solver, DataProperties properties)
public void register(Model<V,T> model)
Extension
public void unregister(Model<V,T> model)
Extension
public void reset()
public Map<Assignment<T>,List<Assignment<T>>> getNoGoods()
public void variableUnassigned(long iteration, T unassignedValue, T assignedValue)
public double countRemovals(long iteration, Collection<T> conflictValues, T value)
public double countRemovals(long iteration, T conflictValue, T value)
public long countPotentialConflicts(long iteration, T value, int limit)
public void constraintBeforeAssigned(long iteration, Constraint<?,T> constraint, T assigned, Set<T> unassigned)
ConstraintListener
constraintBeforeAssigned
in interface ConstraintListener<T extends Value<V,T>>
iteration
- current iterationconstraint
- source constraintassigned
- value which will be assigned to its variable (
Value.variable()
)unassigned
- set of conflicting values which will be unassigned by the
constraint before it assigns the given valuepublic void constraintAfterAssigned(long iteration, Constraint<?,T> constraint, T assigned, Set<T> unassigned)
constraintAfterAssigned
in interface ConstraintListener<T extends Value<V,T>>
iteration
- current iterationconstraint
- source constraintassigned
- value which was assigned to its variable (
Value.variable()
)unassigned
- set of conflicting values which were unassigned by the
constraint before it assigned the given valuepublic void constraintAdded(Constraint<V,T> constraint)
Extension
public void constraintRemoved(Constraint<V,T> constraint)
Extension