增量分数计算器Optaplanner

时间:2019-01-07 16:35:49

标签: java optaplanner

我正在尝试为当前Kaggle TSP challenge实现一个IncrementalScoreCalculator。因此,我一直在查看docs,并且成功实现了一个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是阴影变量。

retractPositioninsertPosition如下所示:

  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++;
                } 
            } 
        }

    }

但是,这似乎无法正常工作,我似乎也无法将其包裹住。任何帮助深表感谢。

0 个答案:

没有答案