【问题标题】:Hill Climbing and Tabu Search in OptaPlannerOptaPlanner 中的爬山和禁忌搜索
【发布时间】:2016-01-28 21:37:49
【问题描述】:

我正在使用 OptaPlanner 解决一些规划问题。我阅读了文档,但我不太确定爬山和禁忌搜索算法究竟是如何工作的。我不确定的是:

  • 爬山选择是否只能选择比当前得分更好的最佳得分移动,还是允许选择不比当前得分更差的最佳得分移动?
  • 禁忌搜索是否允许选择得分比当前得分更差的移动,如果没有移动导致解决方案的得分高于或等于当前得分?

【问题讨论】:

    标签: optaplanner hill-climbing tabu-search


    【解决方案1】:

    对于爬山,请参阅HillClimbingAcceptor#isAccepted(...)。它接受任何得分优于或等于最后一步得分的移动。并且查看用于爬山的默认觅食配置(在LocalSearchPhaseConfig 中,上面写着foragerConfig.setAcceptedCountLimit(1);),只要接受 1 步,即是获胜步。

    对于禁忌搜索,它将选择得分较低的动作,如果:

    • 在它每步选择的移动数中(通常acceptedCountLimit 配置为1000 左右),没有看到更好的移动
    • 或者所有能带来更好分数的动作都在禁忌列表中(它们是“禁忌使用”)。对于 solutionTabu,这意味着可以保证它们不会导致新的最佳解决方案(但 solutionTabu 是无用的)。对于 entityTabu,没有这样的 100% 保证,但如果您有超过 50 个变量(如果您有 1000 个以上变量),您将在大约 99.9999999999999999999999999999999999999999999999999999% 的情况下获得更好的结果。

    PS:爬山很烂。没有理由不使用延迟接受或禁忌搜索。

    PPS:使用 Benchmarker,让 HC、LA、TS、... 互相对抗。它会给你很多洞察力。

    【讨论】:

    • 是否有资料可以让我了解禁忌搜索算法的工作原理?
    • OptaPlanner 文档参考手动完整解释了算法,点击 optaplanner.org 上的蓝色按钮
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多