解决方案克隆发生在连续产生 "new best score" 的步骤中

Solution Cloning happening at steps that produce a "new best score" in a row

最近引起我注意的一件事是,在生成 "new best score" 时,有一个步骤比其他步骤慢。这绝对是在产生 "new best score" 的每个步骤中发生的解决方案克隆。

因此,如果 "new best score" 步骤不是连续的,这没关系。例如,如果我们连续执行 50 个步骤,则解决方案克隆过程将执行 50 次。更聪明的方法是在序列末尾进行克隆过程(仅一次)。

这是可以轻松实现的东西还是有其他东西可以阻止它?

另一个想法是在每个 "new best score" 步骤都进行克隆,但只克隆被作为步骤选择的移动更改的规划实体实例,并将它们附加到最佳解决方案。

如果您连续执行 50 步,并且前 23 步改进了最佳解决方案,我们是否需要在该工作解决方案的第 23 步期间进行规划克隆? 是的,我们这样做了,因为不能保证接下来的 27 个步骤中的任何一个都会提高最佳分数,所以我们不想在第 23 步松开解决方案的状态。并不是每一步都会提高最佳分数,有些会得分更差(尤其是延迟接受)。

也就是说,在构造启发式中 - 我们实际上不进行中间规划克隆,因为我们可以保证解决方案只会改进(更多初始化变量总是更好)。

在任何情况下,使计划克隆变得轻便的最佳方法是设计一个模型,其中计划实体 class 没有任何传入引用(除了 class 的解决方案当然)