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



最近引起我注意的是,当产生"新的最佳分数"时,比其他人慢了一步。这绝对是在产生"新最佳分数"的每一步中发生的解决方案克隆。

因此,如果"新最佳分数"步骤不连续,这没关系。例如,如果我们连续有 50 个步骤,则解决方案克隆过程将执行 50 次。更聪明的方法是在序列结束时进行克隆过程(仅一次(。

这是可以轻松实现的,还是有其他一些事情可以阻止它?

另一个想法是在每个"新的最佳分数"步骤进行克隆,但仅克隆由作为步骤选择的移动更改的计划实体实例,并将它们附加到最佳解决方案中。

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

话虽如此,在构造启发式中 - 我们实际上不做中间计划克隆,因为我们可以保证解决方案只会改进(初始化的变量越多越好(。

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

最新更新