@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
 }