我想动态配置终止策略。我的意图是,当求解器尝试了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配置中显式定义constructionHeuristic
和constructionHeuristic
还是默认情况下对其进行推断?
答案 0 :(得分:1)
不是吗?
<localSearch>
<termination>
<terminationCompositionStyle>OR</terminationCompositionStyle>
<unimprovedStepCountLimit>4000</unimprovedStepCountLimit>
<stepCountLimit>10000</stepCountLimit>
</termination>
</localSearch>
我相信,如果您未定义CH,则默认值为FIRST_FIT
。
答案 1 :(得分:0)
问题出在我的SelectionFilter
上。存在一个错误,使得accept
的{{1}}方法始终返回false,因此本地搜索阶段根本没有进行。
解决该问题后,动态终止配置将按原样工作。