case MOVE :
{
log.info("CLIMB");
double bestImprovement = 0;
boolean moved = false;
FitnessComparator comparator = new SimpleFitnessComparator();
for (Solution neighbour : neighbours)
{
double improvement = comparator.compare(problem, neighbour, currentSolution);
if (improvement > bestImprovement)
{
currentSolution = neighbour;
nextSolution = neighbour;
bestImprovement = improvement;
moved = true;
if (comparator.compare(problem, neighbour, bag.getBestSoFarSolution()) > 0)
{
log.info("UPDATING BEST SO FAR. FITNESS:" + neighbour.getFitness());
bestSoFarSolution = neighbour;
}
}