private void localSearchStepEnded(LocalSearchStepScope stepScope) { if (constraintMatchEnabled) { long timeMillisSpent = stepScope.getPhaseScope().calculateSolverTimeMillisSpent(); for (ConstraintMatchTotal constraintMatchTotal : stepScope.getScoreDirector().getConstraintMatchTotals()) { pointList.add( new ConstraintMatchTotalStepScoreStatisticPoint( timeMillisSpent, constraintMatchTotal.getConstraintPackage(), constraintMatchTotal.getConstraintName(), constraintMatchTotal.getScoreLevel(), constraintMatchTotal.getConstraintMatchCount(), constraintMatchTotal.getWeightTotalAsNumber().doubleValue())); } } }
@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 }
@Override protected Collection<? extends Object> findNewTabu(LocalSearchStepScope stepScope) { return stepScope.getStep().getPlanningValues(); }