模拟退火算法详解
一、引言
模拟退火算法(Simulated Annealing,简称SA)是一种通用概率型优化算法,用来在一个大的搜寻空间内找寻问题的最优解。其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。
二、算法原理
物理退火过程
加温过程:增强粒子的热运动,使其偏离平衡位置。当温度足够高时,固体将熔为液体,从而消除系统原先存在的非均匀状态。
等温过程:与周围环境交换热量而温度不变。对于与环境换热而温度不变的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行,当自由能达到最小时,系统达到平衡态。
冷却过程:使粒子热运动减弱,系统能量下降、晶体结构得以形成。
Metropolis准则
固体在恒定温度下达到热平衡的过程可以用Monte Carlo方法进行模拟。虽然该方法简单,但必须大量采样才能得到比较精确的结果,因而计算量很大。1953年,Metropolis等提出重要性采样法,即用Metropolis准则对产生的新状态进行简略判断,从而减少计算量。
假设在状态x(i)时,系统受到某种扰动而使其状态变为x(j)。与此相对应,系统的能量也从E(i)变为E(j),定义系统由状态x(i)变为x(j)的接收概率为p(概率可以根据具体的优化问题来设定):
当E(j) < E(i)时,系统接受状态x(j)为新的当前状态;
当E(j) >= E(i)时,系统以概率exp[-(E(j)-E(i))/(kT)]接受状态x(j)为新的当前状态;
其中k为Boltzmann常数,T为温度。
用固体退火模拟组合优化问题,将内能E模拟为目标函数值f,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:由初始解i和控制参数初值t开始,对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解。
退火过程由冷却进度表(Cooling Schedule)控制,包括:
控制参数的初值t0:其选取应保证平稳分布足够均匀,可从均匀分布中随机抽取一组状态,并选择使得在各状态间的转移概率满足强遍历性条件的初值t0。
控制参数的衰减函数:因计算机能够模拟的转移状态是有限的,因此把连续的温度场离散化,衰减函数可视作连续温度场的离散化形式。常用的衰减函数是指数式的,即t(k+1)=αt(k),其中0<α<1。为了使模拟退火算法最终收敛于全局最优解,一般要求温度下降的足够慢。
控制参数t的终值tf(或停止准则):保证算法收敛到某一近似解时的判别准则,比如:控制参数t的值小于某个充分小的正数;设定接受新解的次数占总次数的一定比例。
初始解状态S1(是算法迭代的起点):理论上希望任意给定初始解都可最终求到问题的全局最优解(概率1)。实验表明,初始解状态选取的好坏对求解结果有一定影响,一个好的初始解可使算法在解空间中搜索到全局最优解的可能性大大增加。
邻域函数(即状态转移算法):用于产生新的邻域解,其选取应结合问题特性和解空间的复杂性,保证产生的解遍布整个解空间。通常以由当前解经过简单地变换即可产生新解的方法为好,如:“产生新解→变换→接受或舍弃”反复迭代。
三、算法步骤
模拟退火算法可以分解为解空间、目标函数和初始解三部分。模拟退火的基本步骤:
初始化:初始温度T(充分大),初始解状态S(是算法迭代的起点),每个T值的迭代次数L。
对k=1,...,L做第3至第6步:
产生新解S'。
计算增量Δt=C(S')-C(S),其中C(S)为评价函数。
如果Δt<0,则接受S'作为新的当前解,否则以概率exp(-Δt/T)接受S'作为新的当前解。
如果满足终止条件则输出当前解作为最优解,结束程序。终止条件通常取为连续若干个新解都没有被接受时终止算法。
T逐渐减少,且T->0,然后转第2步。
算法对应动态演示图:
模拟退火算法新解的产生和接受可分为如下四个步骤:
由一个产生函数从当前解产生一个位于解空间的新解;为便于后续的计算和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的邻域结构,因而对冷却进度表的选取有一定的影响。
计算与新解所对应的目标函数差;因为目标函数差仅由变换部分产生,所以目标函数差的计算最好按增量计算。事实表明,对大多数情况而言,这是计算目标函数差的最快方法。
判断新解是否被接受;判断的依据是一个接受准则,最常用的接受准则是Metropolis准则:若Δt<0则接受S'作为新的当前解S,否则以概率exp(-Δt/T)接受S'作为新的当前解S。
当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。此时,当前解实现了一次迭代。可在此基础上开始下一轮试验。而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试验。
四、算法特性
使用概率来决定是否接受新解:这意味着搜索过程不易陷入局部最优解。即使在搜索过程中找到了一个局部最优解,模拟退火算法也会以一定的概率接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。
引入随机因素:这使得算法在搜索过程中有更多的机会发现全局最优解。
渐近收敛性:已经从理论上证明,模拟退火算法具有渐近收敛性,即在迭代次数趋于无穷时,以概率1收敛于全局最优解。
初始解和温度参数对结果有影响:不同的初始解和温度参数可能会导致不同的搜索结果。因此,在使用模拟退火算法时,可能需要对这些参数进行适当的调整。
并行性:模拟退火算法是一种并行的优化算法,它的并行性来源于可以在不同的温度下同时进行搜索,或者在同一温度下同时搜索解空间中的多个区域。这种并行性可以大大提高算法的搜索效率。
五、算法应用
模拟退火算法在多个领域都有广泛的应用,如:
组合优化问题:如旅行商问题(TSP)、0-1背包问题、图着色问题、调度问题等。这些问题都是典型的组合优化问题,模拟退火算法可以有效地求解这类问题。
机器学习:在机器学习中,模拟退火算法常用于参数优化,如神经网络的权重调整、支持向量机的参数选择等。
图像处理:模拟退火算法在图像处理中也有广泛的应用,如图像分割、图像恢复、图像识别等。通过模拟退火算法,可以找到图像的最优分割或恢复方案。
其他领域:除了上述领域外,模拟退火算法还可以应用于其他许多领域,如化学、物理、生物信息学等。在这些领域中,模拟退火算法常被用来模拟和优化复杂的系统。
六、总结
模拟退火算法是一种通用概率型优化算法,具有全局搜索能力强、不易陷入局部最优解等优点。它在组合优化、机器学习、图像处理等领域都有广泛的应用。虽然模拟退火算法的计算量�