算法简介
模拟退火算法得益于材料的统计力学的研究成果。统计力学表明材料中粒子的不同结构对应于粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和重新排列。在低温条件下,粒子能量较低。如果从高温开始,非常缓慢地降温(这个过程被称为退火),粒子就可以在每个温度下达到热平衡。当系统完全被冷却时,最终形成处于低能状态的晶体。
假定我们要解决的问题是一个寻找最小值的优化问题。将物理学中模拟退火的思想应用于优化问题就可以得到模拟退火寻优方法。
算法过程
考虑这样一个组合优化问题:我们现在要求函数f(x)的最小值,其中x∈Sx∈S,S表示函数的定义域,N(x)⊆SN(x)⊆S表示x的一个邻域集合。
首先给定一个初始温度T0和该优化问题的一个初始解x(0),并由x(0)生成下一个解x′∈N(x(0))x′∈N(x(0)),是否接受x′x′作为新解x(1)依赖于下面概率:
P(x(0)→x′)={1若f(x′)<f(x(0))e−f(x′)−f(x(0))T0其它P(x(0)→x′)={1若f(x′)<f(x(0))e−f(x′)−f(x(0))T0其它
换句话说,如果生成的解x′x′的函数值比前一个解的函数值更小,则接受x(1)=x′x(1)=x′作为一个新解。否则以概率e−f(x′)−f(x(0))T0e−f(x′)−f(x(0))T0接受x′x′作为一个新解。
同样的,对于模拟退火过程中任意一个解x(k),接受x′x′作为下一个新解x(k+1)的概率和上面公式类似:
P(x(k)→x′)={1若f(x′)<f(x(k))e−f(x′)−f(x(k))Ti其它P(x(k