从概念上理解模拟退火

时间:2011-03-23 23:54:46

标签: simulated-annealing

我刚刚介绍了模拟退火,并希望在再次深入研究代码之前更好地理解它,因为尽管我从目前为止的资源中读取代码,但我觉得我还没有完全理解它。所以请随时纠正我目前对算法的理解:

  

模拟退火算法有一个   实现目标的总体目标   基于的最低(或最高)分数   一些预定义的计算方法   (比如在TSP或   密码子对分布   生物信息学)。但是,要避免   被困在当地的最佳状态,   临时较低(或较高)的分数是   接受,以实现更好   全球解决方案。

另一个问题:当地的最佳选择是如何克服的?是基于一些概率接受更高的分数? (从这里开始很朦胧)

非常感谢您对此进行调查..

1 个答案:

答案 0 :(得分:2)

您的描述是正确的,但可能会产生误导,因为“为了获得更好的全球解决方案”,这表明该算法不知何故知道临时较差的分数会有所帮助。它没有(它不能!),而且大多数情况下,临时较差的分数只是暂时的较差分。

这是个主意。你在黑暗中磕磕绊绊,寻找一个深洞。如果你只是继续走下坡路,那么你最终将会离开最近的洞,这可能不是很深。所以你故意随意地四处走动,如果你进入它们,就让自己爬出浅洞。这么浅的洞对你来说几乎是看不见的;但如果你碰巧陷入一个非常深的洞,你可能会留在它里面。

现在,当然,最终你确实希望找到你所处的任何洞的底部。所以你开始时有很多随机性并逐渐减少它,所以最初你几乎完全随意地四处游荡(除非你有幸陷入一个非常深的洞),但后来 - 一旦你希望你找到了最深的洞 - 你可以更准确地找到它的底部。

物理类比是随着液体冷却形成晶体的过程。通过缓慢冷却,您可以获得更大的能量(更低的总能量,更接近全局最佳)晶体。温度=随机性,基础过程与模拟退火过程非常相似。或者说,模拟退火非常类似于缓慢晶体生长的过程。

就机制而言:通常的设置是你随机尝试步骤,如果他们让事情变得更好,总是接受它们,如果他们更糟糕,接受他们的概率看起来像exp(-d / T) d是步骤使事情变得多糟糕,而T,即“温度”,是衡量你为了更多地探索解决方案空间而准备忍受多少随机废话的量度。你逐渐减少T.当T-> 0时,接受使事情变得更糟的一步的概率变为零。

有关如何生成随机步骤以及如何降低“温度”的详细信息,大部分实际工作都是: - )。