在本地搜索的联合中有更多移动选择器的优点和缺点
Advantages and disadvantages of having more move selectors in the union in local search
关于本地搜索中移动选择器的数量,我想发表意见。在大多数用例中,添加新的移动选择器(具有给定的移动类型)是否比消极的更积极。这意味着它是否有助于算法更快地摆脱局部最优,或者它是否会通过额外的移动类型来分散算法的注意力?
还有没有一种方法可以根据解决方案的当前状态和存在的约束违规来控制哪些移动类型比其他移动类型更多?
如果您 运行 的时间超过几秒钟通常会更好,因为这样可以提供更多的多样性。默认配置只有更改和交换移动,因此可以说它需要支柱更改、支柱交换、2opt ......但这取决于用例。例如,背包需要支柱交换,车辆路线需要 2opt,但反之亦然,它们没用。我确实希望未来的版本能够识别链接的 var,因此默认配置将包括 2opts。
至于控制移动类型:您静态地使一种移动类型的选择次数是另一种移动类型的两倍。或者使用概率选择器,您甚至可以根据移动实例对其进行区分(尽管您需要能够缓存所有移动,因此不适用于大数据集)。
但开箱即用,无法根据解决方案的状态动态更改移动类型。这确实是 超启发式 :如果最佳分数在 100 步内未得到改善,则切换到第二个 moveSelector,等等。虽然可能可以对多个求解器阶段和未改进的步骤终止,一旦我们开箱即用地支持超级启发式算法,它会更好。
另请注意,基于约束匹配 - 以及很快的起诉图(这是约束匹配总图的反向图),我们将研究 Guided Local Search,比其他实体更频繁地被起诉计数更高(=涉及更多约束违规)的选定实体。
关于本地搜索中移动选择器的数量,我想发表意见。在大多数用例中,添加新的移动选择器(具有给定的移动类型)是否比消极的更积极。这意味着它是否有助于算法更快地摆脱局部最优,或者它是否会通过额外的移动类型来分散算法的注意力?
还有没有一种方法可以根据解决方案的当前状态和存在的约束违规来控制哪些移动类型比其他移动类型更多?
如果您 运行 的时间超过几秒钟通常会更好,因为这样可以提供更多的多样性。默认配置只有更改和交换移动,因此可以说它需要支柱更改、支柱交换、2opt ......但这取决于用例。例如,背包需要支柱交换,车辆路线需要 2opt,但反之亦然,它们没用。我确实希望未来的版本能够识别链接的 var,因此默认配置将包括 2opts。
至于控制移动类型:您静态地使一种移动类型的选择次数是另一种移动类型的两倍。或者使用概率选择器,您甚至可以根据移动实例对其进行区分(尽管您需要能够缓存所有移动,因此不适用于大数据集)。
但开箱即用,无法根据解决方案的状态动态更改移动类型。这确实是 超启发式 :如果最佳分数在 100 步内未得到改善,则切换到第二个 moveSelector,等等。虽然可能可以对多个求解器阶段和未改进的步骤终止,一旦我们开箱即用地支持超级启发式算法,它会更好。
另请注意,基于约束匹配 - 以及很快的起诉图(这是约束匹配总图的反向图),我们将研究 Guided Local Search,比其他实体更频繁地被起诉计数更高(=涉及更多约束违规)的选定实体。