模拟退火算法及模型

模拟退火算法及模型

作者:凯鲁嘎吉 - 博客园 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.模拟退火算法的缺点:

        由于要求较高的初始温度、较慢的降温速率、较低的终止温度,以及各温度下足够多次的抽样,因此优化过程较长。

猜你喜欢

转载自www.cnblogs.com/kailugaji/p/9648903.html
今日推荐