模拟退火属于搜索算法。搜索算法包括盲目搜索和启发式搜索,按照预定的控制策略实行搜索,在搜索控制中获取的中间信息不用来改进控制搜索,称为盲目搜索,反之,称为启发式搜索。关于“启发式”有两种看法:(1)任何有助于找到问题的解,但不能保证找到解的方法均是启发式方法;(2)有助于加速求解过程和找到较优解的方法是启发式方法。
盲目搜索有深度优先、广度优先、代价优先、向前、向后、双向。。。
启发式搜索有爬山法、模拟退火法、遗传算法、粒子群算法、蚁群算法。。。
贪心算法:
随机选定一个初始解x0;
Do while(终止条件不满足)
在某个领域函数所定义的领域范围内,按照某个(随机)扰动▲产生策略,得到一个新解xi’;
对新解心境评估,得到f(xi’);
如果如果f(xi’)>f(xi)或者f(xi’)
否则xi+1=xi;
End do
爬山算法:
随机选定一个初始解x0;
Do While(终止条件不满足)
在某个领域函数所定义的领域范围内,按照某个(随机)扰动产生策略,得到多个新解Xnew={xi1,xi2,…,xik};
对这组新解进行评估,的{f(xi1),f(xi2),…,f(xik)};
xi+1=xi’,xi’属于Xnew,对任意xij,f(xi’)>f(xi)且f(xi’)>f(xij),即当新的当前解比老解好,并且是所有新解中最好的一个;
如果对任意xij,f(xi)
End do
算法设计要素:
编码策略(个体表示与问题解的映射关系)
初始解的产生(从什么位置开始搜索)
领域函数的设计(下一个解的产生概率与当前解之间的距离的关系)
新解产生策略(随机、确定)
接受策略(贪心,总是接受比当前解更好的解)
存在问题:贪心算法和爬山算法的缺点是只能收敛于局部最优解,遇到平台则无以事从。因此需要设计新的搜索算法。
模拟退火算法起源于锻造过程(加热金属,在温度下降的过程中,使进入产生想要的形态)
物理退火过程:加温过程、等温过程、冷却(退火)过程
等温下热平衡过程可用MonteCarlo方法模拟,计算量大。
1953年Metropolis提出重要性采样方法,即以概率接受新状态,称Metropolis准则,计算量相对Monte Carlo方法显著减少。
1983年Kirkpatrick等提出模拟退火算法,并将其应用于组合优化问题的求解,比如tsp。
Metropolis准则:
假设在状态xold时,系统受到某种扰动而使其状态变为xnew。于此相对应,系统的能量也从E(xold)变成E(xnew),系统由状态xold变为状态xnew的接受概率p。
模拟退火算法的流程如下:
1)随机产生一个初始解x0,令xbest=x0,并计算目标函数值E(x0);
2)设置初始温度T(0)=To,迭代次数i=1;
3)Do while T(i)>Tmin
1)for j=1~k
2)对当前最优解xbest按照某一领域函数,产生一新的解xnew。计算新的目标函数值E(xnew),并计算目标函数值的增量▲E=E(xnew)-E(xold)。
3)如果▲E<0,则xbest=xnew;
4)如果▲E>0,则p=exp(-▲E/T(i));
1)如果c=random(0,1)
5)End for 4)i=i+1; 5)End do 6)输出当前最有点,计算结束 模拟退火算法要素 1、状态空间与状态生产函数(领域函数) 搜索空间也称为状态空间,他由经过编码的可行解的集合所组成。 状态产生函数(领域函数)应尽可能保证产生的候选解遍布全部解空间。通常由两部分组成,即产生候选解的方式和候选解产生的概率分布。 候选解一般采用按照某一概率密度函数对解空间进行随机采样获得。 概率分布可以是均匀分布、正态分布、指数分布等。 2、状态转移概率(接受概率)p 状态转移概率是从一个状态xold向另一个状态xnew的转移概率; 通俗的理解是接受一个新解为当前解的概率; 它与当前的温度参数T有关,随温度下降而减小。 一般采用metropolis准则 3、冷却精度表T(t) 冷却进度表是从某一高温状态To向低温状态冷却时的降温管理表。 假设时刻t的温度用T(t)来表示,则经典模拟退火算法的降温方式为: T(t)=To/lg(1+t),而快速模拟退火算法的降温方式为:T(t)=To/(1+t)。 这两种方式都能够使模拟退火算法收敛于全局最小点。 4、初始温度To 实验表明,初温越大,获得高质量解的几率越大,但花费的计算时间将增加。因此,初温的确定应折中考虑优化质量和优化效率,常用的方法包括: (1)均匀抽样一组状态,一各状态目标值的方差为初温。 (2)随机产生一组状态,确定两两状态的最大目标值差,然后依据差值,利用一定的函数确定温度。 (3)利用经验函数给出。 5、内循环终止准则 或称Metropolis抽样稳定准则,用于决定在各温度下产生候选解的数目。常用的抽样稳定准则包括: (1)检验目标函数的均值是否稳定; (2)连续若干步的目标值变化较小; (3)按一定的步数抽样。 6、外循环终止准则 即算法终止准则,常用的包括: (1)设置终止温度的阀值 (2)设置外循环迭代次数 (3)算法搜索到的最优值连续若干步保持不变 (4)检验系统熵是否稳定 模拟退火算法的改进 (1)设计合理的状态产生函数,使其根据搜索进程的需要表现出状态的全空间分散性或局部区域性 (2)设计高效的退火策略 (3)避免状态的迂回搜索 (4)采用并行搜索结构 (5)为避免陷入局部极小,改进对温度的控制方程 (6)选择合适的初始状态 (7)设计合适的算法终止准则 算法实现与应用 用模拟退火求解TSP问题。一般情况下,TSP问题用动态规划法计算,但对于大规模的TSP问题,动态规划法效率低,采用模拟退火法可以解决。 模拟退火法解决TSP问题的基本过程是: (1)编码(城市编号顺序编码) (2)状态产生函数(逆转算子) (3)状态接受函数 (4)初温与初始状态 (5)降温函数设计 (6)温度修改准则和算法终止准则 参考资料 https://wenku.baidu.com/view/ea521c06804d2b160b4ec0d1.html http://blog.csdn.net/acdreamers/article/details/10019849