我有一个概念问题。我正在进行一个优化项目,在该项目中,我使用了模拟退火元启发式来获得更好的解决方案。为了在SA中创建邻居,我使用了SWAP和2-OPT方法来通过创建新序列来创建邻居。即使是小问题规模的结果也表明,当我运行程序(超过500次迭代(时,10次中有7次实现的最佳目标值是启发式实现的初始目标值。问题是,是什么原因导致了这种行为?
- 是因为初始可行解具有高质量吗
- 改变冷却系数和启动温度会有多大帮助?(到目前为止,在小的情况下,它没有帮助(
- 我不是在创造高效的邻居吗
我还缺少什么吗?
您需要跟踪接受的解决方案的百分比。例如,每100个提案,打印接受的解决方案的数量。
-
从随机解开始,而不是接近最优解。
-
在早期阶段,>应接受80%。如果不是这样的话,增加温度直到这样。
-
在最后阶段,<应接受10%,如果不是这样,则降低停止温度。
-
冷却方案对溶液质量的影响很小,冷却系数越低越好,在0.99-0.8之间。(您可以在每个温度上重复N次以增加建议(
-
你可以尝试不同的建议。
-
如果你申请旅行推销员,你可以选择模拟退火(SA(的输出。最有可能的是,你的SA有2个选项来"清洁"解决方案,比没有SA的2个选项要好。
希望这能有所帮助。