如何使用模拟退火来获得局部最优



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

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

我还缺少什么吗?

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

  • 从随机解开始,而不是接近最优解。

  • 在早期阶段,>应接受80%。如果不是这样的话,增加温度直到这样。

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

  • 冷却方案对溶液质量的影响很小,冷却系数越低越好,在0.99-0.8之间。(您可以在每个温度上重复N次以增加建议(

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

  • 如果你申请旅行推销员,你可以选择模拟退火(SA(的输出。最有可能的是,你的SA有2个选项来"清洁"解决方案,比没有SA的2个选项要好。

希望这能有所帮助。

相关内容