如何修改战略振荡,以便只考虑其标准中的某些得分水平?

时间:2017-05-10 19:39:40

标签: optaplanner

我在项目中使用可弯曲的得分,我有多个级别。

战略振荡背后的标准已证明在最后两个层面非常有用。因此,从N-1级突破一些约束但从N级改进一些约束的动作非常好。这有助于求解器从局部最优中逃脱,并且在此之后的移动从N-1级修复破坏的约束并且产生新的最佳分数。

虽然它在最后两个级别之间非常有用,但是当它开始允许移动改善较低级别但例如违反级别0时会产生混乱。

所以我的问题是可以配置战略振荡,因此它只能看到最后两个级别,OptaPlanner是否具有此内置功能?如果不是我怎么能使这成为可能,我想我将不得不实施自定义觅食者?

1 个答案:

答案 0 :(得分:1)

我想你想创建一个在FinalistPodium内使用的自定义Forager。就像奥运会的领奖台一样,它表示谁是第一,谁是第二,等等。

请参阅StrategicOscillationByLevelFinalistPodium.java。这里是龙。这是非常内部的代码,而不是公共API。你可能不想这样做。

至于自己插入电源,请在自己的LocalSearchForagerConfig.buildForager()中覆盖ForagerConfig,然后通过编程API(SolverConfig等)插入。