模拟退火算法及模型
作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/
一、算法的提出
模拟退火算法最早的思想由Metropolis等(1953)提出,1983年Kirkpatrick等将其应用于组合优化。
二、算法的目的
1.解决NP复杂性问题
2.克服优化过程陷入局部极小
3.克服初值依赖性
三、物理退火过程
1.加温过程 -- 增强粒子的热运动,消除系统原先可能存在的非均匀态;
2.等温过程 -- 对于与环境换热而温度不变的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行,当自由能达到最小时,系统达到平衡态;
3.冷却过程 -- 使粒子热运动减弱并渐趋有序,系统能量逐渐下降,从而得到低能的晶体结构。
四、组合优化与物理退火的相似性
五、数学表述
1.在温度 T ,分子停留在状态 r 满足波尔兹曼概率分布
E 表示分子能量的一个随机变量,E(r) 表示状态 r 的能量,kb为Boltzmann常数。Z(T)为概率分布的标准化因子:
2.Metropolis准则 - 以概率接受新状态
假设在状态xold时,系统受到某种扰动而使其状态变为xnew。与此相对应,系统的能量也从E(xold)变为E(xnew) ,系统由xold状态变为xnew状态的接受概率p为
六、算法描述
(1)随机产生一个初始解 x0 ,令xbest = x0 ,并计算目标函数值E( x0 );
(2)设置初始温度T = T0,迭代次数 i = 1 ;
(3)do while T > Tmin
1) for j = 1 ~ k
2) 对当前最优解 xbest 按照某一邻域函数, 产生一新的解 xnew 。计算新的目标函数值E(xnew ),并计算目标函数值的增量∆E= E(xnew )- E(xbest );
3) 如果 ∆E <0 , 则 xbest = xnew ;
4) 如果 ∆E >0, 则 p = exp (- ∆E / T(i));
і) 如果 c = random[0,1]<p, xbest = xnew;
ii) 否则 xbest = xbest 。
5) End for
(4)update T, i = i+1;
(5)End Do
(6)输出当前最优点,计算结束。
1 给定初温t=t0,随机产生初始状态s=s0,令k=0;
2 Repeat
3 Repeat
4 产生新状态sj=Genete(s);
5 if min{1,exp[-(C(sj)-C(s))/tk]}>=randrom[0,1]
6 s=sj;
7 Until 抽样稳定准则满足;
8 退温tk+1=update(tk)并令k=k+1;
9 Until 算法终止准则满足;
10 输出算法搜索结果。
七、模拟退火算法的优缺点
1.模拟退火算法的优点:
(1)质量高;
(2)初值鲁棒性强;
(3)简单、通用、易实现;
(4)能获得全局最优。
2.模拟退火算法的缺点:
由于要求较高的初始温度、较慢的降温速率、较低的终止温度,以及各温度下足够多次的抽样,因此优化过程较长。