【问题标题】:How to get out of local optimum using simulated annealing?如何使用模拟退火摆脱局部最优?
【发布时间】:2022-11-03 20:25:14
【问题描述】:

我有一个概念问题。我正在开展一个优化项目,在该项目中我使用模拟退火元启发式算法来获得更好的解决方案。为了在 SA 中创建邻居,我使用了 SWAP 和 2-OPT 方法通过创建新序列来创建邻居。即使对于小问题,结果也表明,当我运行程序(超过 500 次迭代)时,10 次中有 7 次达到的最佳目标值是启发式实现的初始目标值。 问题是什么可能导致这种行为?

  • 是因为初始可行解质量高吗?
  • 改变冷却系数和启动温度会有多大帮助? (到目前为止,在小情况下它没有帮助)
  • 我不是在创建高效的邻居吗?

还有什么我想念的吗?

【问题讨论】:

    标签: heuristics simulated-annealing


    【解决方案1】:

    您需要跟踪百分比,接受的解决方案。 例如,每 100 个提案,打印接受的解决方案的数量。

    • 从随机解决方案开始,而不是接近最佳解决方案。

    • 在早期阶段,>80% 应该被接受。如果不是这种情况,请提高温度,直到如此。

    • 在最后阶段,应该接受<10%,如果不是这样,降低停止温度。

    • 冷却方案对溶液质量的影响很小,只要降低冷却系数就足够了,在0.99和0.8之间。 (您可以在每个温度上重复 N 次以增加建议)

    • 您可以尝试不同的建议。

    • 如果您申请旅行推销员,您可以选择模拟退火 (SA) 的输出。最有可能的是,您使用 2-opt 来“清理”解决方案的 SA 比没有 SA 的 2-opt 更好。

    希望这可以帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 2012-01-21
      • 1970-01-01
      相关资源
      最近更新 更多