Optaplanner:动态终止配置

时间:2019-01-16 14:25:41

标签: optaplanner

我想动态配置终止策略。我的意图是,当求解器尝试了10k步或分数未提高4k步时,求解器应终止。为此,我在config中设置阶段,如下所示:

<constructionHeuristic></constructionHeuristic>
<localSearch></localSearch>

然后在启动求解器之前,我先设置

TerminationConfig terminationConfig = new TerminationConfig();
terminationConfig.setTerminationCompositionStyle(TerminationCompositionStyle.OR);
terminationConfig.setUnimprovedStepCountLimit(4000);
terminationConfig.setStepCountLimit(10000);

LocalSearchPhaseConfig localSearchPhaseConfig = (LocalSearchPhaseConfig) solverFactory.getSolverConfig().getPhaseConfigList().get(1);
localSearchPhaseConfig.setTerminationConfig(terminationConfig);

我尝试将unimprovedStepCount的值保持为1,但在30-40分钟后它仍然没有终止。如何定义此配置?

此外,我是否需要在xml配置中显式定义constructionHeuristicconstructionHeuristic还是默认情况下对其进行推断?

2 个答案:

答案 0 :(得分:1)

不是吗?

  <localSearch>
    <termination>
      <terminationCompositionStyle>OR</terminationCompositionStyle>
      <unimprovedStepCountLimit>4000</unimprovedStepCountLimit>
      <stepCountLimit>10000</stepCountLimit>
    </termination>
  </localSearch>

我相信,如果您未定义CH,则默认值为FIRST_FIT

答案 1 :(得分:0)

问题出在我的SelectionFilter上。存在一个错误,使得accept的{​​{1}}方法始终返回false,因此本地搜索阶段根本没有进行。

解决该问题后,动态终止配置将按原样工作。