}
public void init(Solver solver) {}
public Neighbour selectNeighbour(Solution solution) {
Model model = solution.getModel();
boolean canConflict = model.nrAssignedVariables()!=0;
Variable variable = (Variable)ToolBox.random(model.variables());
Value value = (Value)ToolBox.random(variable.values());
if (value.equals(variable.getAssignment())) return null;
Set conflicts = model.conflictValues(value);
double eval = iValueWeight * value.toDouble();
if (variable.getAssignment()!=null)
eval -= iValueWeight * variable.getAssignment().toDouble();
else
eval -= iConflictWeight;
eval += iConflictWeight * model.conflictValues(value).size();
return new ItcSimpleNeighbour(variable,value,eval);
}