在本地搜索中在联合中拥有更多移动选择器的优点和缺点

时间:2016-12-08 02:26:27

标签: optaplanner

关于本地搜索中移动选择器的数量,我想要一个意见。在大多数用例中,添加新的移动选择器(具有给定的移动类型)是否比否定更为积极。意义是否有助于算法更快地逃离局部最优,或者是否因为有额外的移动类型而更加分散算法?

根据解决方案的当前状态和存在的约束违规,还有一种方法可以控制哪些移动类型将比其他移动更多?

1 个答案:

答案 0 :(得分:2)

如果你的运行时间超过几秒钟通常会更好,因为它会带来更多的多样性。默认配置只有更改和交换移动,所以可以说它需要支柱更改,支柱交换,2opt,......但这取决于用例。背包需要支柱交换,例如车辆路由需要2opt,但反之亦然,它们是无用的。我确实希望未来版本能识别链式var,因此默认配置将包含2opts。

至于控制移动类型:静态地使一种移动类型的选择是另一种移动类型的两倍。或者使用概率选择器,您甚至可以根据移动实例区分它(尽管您需要能够缓存所有移动,因此不能用于大数据集)。

但开箱即用的不是根据解决方案的状态动态更改移动类型。这实际上是超启发式:如果100步的最佳得分未得到改善,请切换到第二个moveSelector,等等。尽管可能可以使用多个求解器阶段执行类似的操作。未经改进的步骤终止,一旦我们对超启发式提供开箱即用,它会更好。

另请注意,基于约束匹配 - 很快就会将起诉图(这是约束的反向地图匹配总图),我们将查看引导本地搜索,被选定实体的起诉数量较高(=涉及更多约束违规)比其他实体更频繁。