public void stepTaken(LocalSearchStepScope localSearchStepScope) {
if (localSearchStepScope.getStepIndex() == localSearchStepScope.getLocalSearchSolverPhaseScope().getBestSolutionStepIndex()) {
successiveNoHardScoreChange = 0;
shiftingPenaltyActive = false;
} else {
HardAndSoftScore lastStepScore = (HardAndSoftScore) localSearchStepScope.getLocalSearchSolverPhaseScope()
.getLastCompletedLocalSearchStepScope().getScore();
HardAndSoftScore stepScore = (HardAndSoftScore) localSearchStepScope.getScore();
if (stepScore.getHardScore() >= hardScoreActivationThreshold
&& lastStepScore.getHardScore() == stepScore.getHardScore()) {
successiveNoHardScoreChange++;
} else {
successiveNoHardScoreChange--;
if (successiveNoHardScoreChange < 0) {
successiveNoHardScoreChange = 0;