|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.sf.cpsolver.ifs.perturbations.DefaultPerturbationsCounter<V,T>
public class DefaultPerturbationsCounter<V extends Variable<V,T>,T extends Value<V,T>>
Default computation of perturbation penalty (minimal perturbation problem).
A distance function can be defined with the help of perturbations. A
perturbation is a variable that has a different value in the solutions of the
initial and the new problem. Some perturbations must be present in each new
solution. So called input perturbation means that a variable must have
different values in the initial and changed problem because of some input
changes (e.g., a course must be scheduled at a different time in the changed
problem). The distance function can be defined as the number of additional
perturbations. They are given by subtraction of the final number of
perturbations and the number of input perturbations (variables without
initial assignments).
This implementation is easily extendable. It disassemble all the available
cases into a comparison of the initial and the assigned value different each
other. So, the only method which is needed to be changed is
getPenalty(Value, Value)
. Its current
implementation is:
protected double getPenalty(Value assignedValue, Value initialValue) {
return 1.0;
}
Solver
,
Solution
,
Variable
Field Summary | |
---|---|
protected static DecimalFormat |
sDoubleFormat
|
Constructor Summary | |
---|---|
DefaultPerturbationsCounter(DataProperties properties)
Constructor |
Method Summary | |
---|---|
void |
getInfo(Map<String,String> info,
Model<V,T> model)
Some (perturbation) information about the solution might be returned here. |
void |
getInfo(Map<String,String> info,
Model<V,T> model,
Collection<V> variables)
Some (perturbation) information about the solution might be returned here (only include variables from the given set). |
protected double |
getPenalty(T assignedValue,
T initialValue)
Computes perturbation penalty between assigned and initial value of the same lecture. |
protected double |
getPenaltyA(T selectedValue,
T initialValue)
Case A: initial value of a different unassigned variable cannot be assigned (computed by ViolatedInitials ) |
protected double |
getPenaltyB(T selectedValue,
T assignedValue,
T initialValue)
Case B: initial value is unassigned from a conflicting variable. |
protected double |
getPenaltyC(T selectedValue,
T assignedValue,
T initialValue)
Case C: non-initial value is unassigned from a conflicting variable. |
protected double |
getPenaltyD(T selectedValue,
T initialValue)
Case D: different than initial value is assigned to the varaible |
double |
getPerturbationPenalty(Model<V,T> model)
Returns perturbation penalty, i.e., the distance between current solution and the solution of the initial problem (see Variable.getInitialAssignment() ). |
double |
getPerturbationPenalty(Model<V,T> model,
Collection<V> variables)
Returns perturbation penalty, i.e., the distance between current solution and the solution of the initial (only include variables from the given set) problem (see Variable.getInitialAssignment() ). |
double |
getPerturbationPenalty(Model<V,T> model,
T selectedValue,
Collection<T> conflicts)
Returns perturbation penalty of the solution which become from the current solution when given conflicting values are unassigned and the selected value is assigned. |
protected ViolatedInitials<V,T> |
getViolatedInitials()
|
void |
init(Solver<V,T> solver)
Initialization |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static DecimalFormat sDoubleFormat
Constructor Detail |
---|
public DefaultPerturbationsCounter(DataProperties properties)
properties
- input configurationMethod Detail |
---|
public void init(Solver<V,T> solver)
init
in interface PerturbationsCounter<V extends Variable<V,T>,T extends Value<V,T>>
public double getPerturbationPenalty(Model<V,T> model)
PerturbationsCounter
Variable.getInitialAssignment()
).
getPerturbationPenalty
in interface PerturbationsCounter<V extends Variable<V,T>,T extends Value<V,T>>
model
- current modelpublic double getPerturbationPenalty(Model<V,T> model, Collection<V> variables)
PerturbationsCounter
Variable.getInitialAssignment()
).
getPerturbationPenalty
in interface PerturbationsCounter<V extends Variable<V,T>,T extends Value<V,T>>
model
- current modelprotected ViolatedInitials<V,T> getViolatedInitials()
protected double getPenalty(T assignedValue, T initialValue)
assignedValue
- value assigned to a varuable (null when variable is
unassigned)initialValue
- initial value of the same varaible (always not null)protected double getPenaltyA(T selectedValue, T initialValue)
ViolatedInitials
)
selectedValue
- value which is going to be assigned to its variableinitialValue
- value of a different variable, which is currently assigned but
which need to be unassifned Different variable, which is
unassigned and whose initial value is in conflict with the
selected value.protected double getPenaltyB(T selectedValue, T assignedValue, T initialValue)
selectedValue
- value which is going to be unassigned to its variableassignedValue
- value currently assigned to a conflicting variable (different
from the one of selectedVariable)initialValue
- initial value of the conflicting variable of assignedValueprotected double getPenaltyC(T selectedValue, T assignedValue, T initialValue)
selectedValue
- value which is going to be unassigned to its variableassignedValue
- value currently assigned to a conflicting variable (different
from the one of selectedVariable)initialValue
- initial value of the conflicting variable of assignedValueprotected double getPenaltyD(T selectedValue, T initialValue)
selectedValue
- value which is going to be unassigned to its variableinitialValue
- initial value of the same variablepublic double getPerturbationPenalty(Model<V,T> model, T selectedValue, Collection<T> conflicts)
PerturbationsCounter
getPerturbationPenalty
in interface PerturbationsCounter<V extends Variable<V,T>,T extends Value<V,T>>
model
- current modelselectedValue
- value to be selected in the next iterationconflicts
- conflicting values to be unassigned in the next iterationpublic void getInfo(Map<String,String> info, Model<V,T> model)
PerturbationsCounter
getInfo
in interface PerturbationsCounter<V extends Variable<V,T>,T extends Value<V,T>>
info
- resultant info tablemodel
- current modelpublic void getInfo(Map<String,String> info, Model<V,T> model, Collection<V> variables)
PerturbationsCounter
getInfo
in interface PerturbationsCounter<V extends Variable<V,T>,T extends Value<V,T>>
info
- resultant info tablemodel
- current model
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |