步骤

时间:2018-02-13 08:22:03

标签: optaplanner

我正在使用后期接受作为本地搜索算法,这是它实际选择移动的方式:

  1. 如果我的觅食者是5,那么它会选择5个动作,然后每步进行1次随机移动。
  2. 在每一步中,它只选择增加分数的动作,即跨步骤贪婪地挑选。
  3. Forager.pickMove()

    public LocalSearchMoveScope pickMove(LocalSearchStepScope stepScope) {
            stepScope.setSelectedMoveCount(selectedMoveCount);
            stepScope.setAcceptedMoveCount(acceptedMoveCount);
            if (earlyPickedMoveScope != null) {
                return earlyPickedMoveScope;
            }
            List<LocalSearchMoveScope> finalistList = finalistPodium.getFinalistList();
            if (finalistList.isEmpty()) {
                return null;
            }
            if (finalistList.size() == 1 || !breakTieRandomly) {
                return finalistList.get(0);
            }
            int randomIndex = stepScope.getWorkingRandom().nextInt(finalistList.size());// should have checked for best here
            return finalistList.get(randomIndex);
        }
    

    我有两个问题:

    1. 首先,我们可以选择最好的5个而不是随机选择1个。
    2. 我们可以允许移动选择降低分数但可以提高分数(无法知道)吗?

1 个答案:

答案 0 :(得分:0)

  1. 在文档中查找acceptedCountLimitselectedCountLimit。那些就是那样做的。
  2. 情况已经如此(尤其是延迟接受和模拟退火)。在DEBUG日志中,只需查看步数得分与最佳得分。或者在optaplanner-benchmark中询问步骤得分统计。