

PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 
java.lang.Object net.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: noninitial 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 