Калькулятор добавочной оценки Optaplanner - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь реализовать 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++;
                } 
            } 
        }

    }

Но это как-то не работает должным образом, и я не могу обернуться вокруг него. Любая помощь высоко ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...