@Override public void stepEnded(LocalSearchStepScope stepScope) { super.stepEnded(stepScope); double timeGradient = stepScope.getTimeGradient(); double reverseTimeGradient = 1.0 - timeGradient; temperatureLevels = new double[levelsLength]; for (int i = 0; i < levelsLength; i++) { temperatureLevels[i] = startingTemperatureLevels[i] * reverseTimeGradient; if (temperatureLevels[i] < temperatureMinimum) { temperatureLevels[i] = temperatureMinimum; } } // TODO implement reheating }