Я пытаюсь реализовать IncrementalScoreCalculator
для текущей задачи Kaggle TSP . Итак, я просматривал документы и успешно реализовал EasyScoreCalacultor
, который возвращает HardSoftScore
, где hardscore
- это количество мест, для которых каждый 10-й шаг не является простым.
что у меня выглядит следующим образом
@Override
public void beforeVariableChanged(Object o, String s) {
if (o instanceof Domicile) {
return;
}
switch (s) {
case "previousStandstill":
retract((Visit) o);
break;
case "position":
retractPosition((Visit) o);
break;
default:
throw new IllegalArgumentException("Unrecognized variable change " + s);
}
}
@Override
public void afterVariableChanged(Object o, String s) {
if (o instanceof Domicile) {
return;
}
switch (s) {
case "previousStandstill":
insert((Visit) o);
break;
case "position":
insertPosition((Visit) o);
break;
default:
throw new IllegalArgumentException("Unrecognized variable change " + s);
}
где position
- теневая переменная.
retractPosition
и insertPosition
выглядят следующим образом:
private void retractPosition(Visit visit) {
Integer position = visit.getPosition();
if (position != null) {
if (visit.getLocation().getId() % 10 == 0) {
if (isPrime(position)) {
hardscore--;
}
}
}
}
private void insertPosition(Visit visit) {
Integer position = visit.getPosition();
if (position!= null) {
if (visit.getLocation().getId() % 10 == 0) {
if (isPrime(position)) {
hardscore++;
}
}
}
}
Но это как-то не работает должным образом, и я не могу обернуться вокруг него. Любая помощь высоко ценится.