转载——模拟退火算法
-
什么是退火:退火是指将固体加热到足够高的温度,使分子呈随机排列状态,然后逐步降温使之冷却,最后分子以低能状态排列,固体达到某种稳定状态。
加温过程——增强粒子的热运动,消除系统原先可能存在的非均匀态;
等温过程——对于与环境换热而温度不变的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行,当自由能达到最小时,系统达到平衡态;
冷却过程——使粒子热运动减弱并渐趋有序,系统能量逐渐下降,从而得到低能的晶体结构。
-
先给定以粒子相对位置表征的初始状态old,作为固体的当前状态,该状态的能量是
。然后用摄动装置使随机选取的某个粒子的位移随机地产生一个微小变化,得到一个新状态new
,新状态的能量是
。
假设在状态
时,系统受到某种扰动而使其状态变为
。与此相对应,系统的能量也从
变成
,系统由状态
变为状态
的接受概率P
(1)若在温度T,当前状态old→ 新状态new
(2)若
,则接受 new 为当前状态;
否则,若概率
大于[0,1)区间的随机数,则仍接受状态new 为当前状态;若不成立则保留状态 old为当前状态
重复以上新状态的产生过程。在大量迁移(固体状态的变换称为迁移)后,系统趋于能量较低的平衡状态。
由(1.1)式可知,高温下可接受与当前状态能差较大的新状态为重要状态,而在低温下只能接受与当前状态能差较小的新状态为重要状态。这与不同温度下热运动的影响完全一致,在温度趋于零时,就不能接受任何成立
时的新状态new了。上述接受新状态的准则称为Metropolis准则,相应的算法被称为Metropolis算法。
-
对固体退火过程的研究给人们以新的启示。1982年,Kirkpatrick等首先意识到固体退火过程与组合优化问题之间存在的类似性,Metropolis等对固体在恒定温度下达到热平衡过程的模拟也给他们以启迪:应该把 Metropolis准则引入到优化过程中来。最终他们得到一种对Metropolis算法进行迭代的组合优化算法,因这种算法模拟固体退火过程,故称之为”模拟退火算法”。
在模拟退火算法中,设优化问题的控制参数为
时的一个解
及其非负目标函数
分别与固体的在某一温度下的一个微观状态
及其能量
等价,设随着算法进程递减其值的控制参数
相当固体退火过程中的温度的角色,则对于控制参数
的每一取值,算法持续进行”产生新解—判断—接受/舍弃”的迭代过程就对应着固体在某一恒定温度下趋于热平衡的过程,也就是执行了一次Metropolis算法。与Metropolis算法从某一初始状态出发,通过计算系统的时间演化过程,求出系统最终达到的状态相似,模拟退火算法从某个初始解出发,经过大量解的变换后,可以求得给定控制参数值
时组合优化问题的相对最优解
。然后减少控制参数
的值,重复执行Metropolis算法,就可以在控制参数
趋于零时,最终求得组合优化问题的整体最优解。由于固体退火必须”徐徐”降温,才能使固体在每一温度下都达到热平衡,最终趋于能量最小的基态,控制参数的值也必须缓慢衰减,才能确保模拟退火算法最终趋于组合优化问题的整体最优解集。
模拟退火算法用Metropolis算法产生组合优化问题解的序列,并由与Metropolis准则对应的转移概率
:
确定是否接受从当前解
到新解
的转移。式(1.2)中的
表示控制参数。开始让
取较大的值(与固体的熔解温度相对应),在进行足够多的转移后,缓慢减少
的值(与”徐徐”降温相对应),如此重复,直至满足某个停止准则是算法终止。因此,模拟退火算法可视为递减控制参数值时Metropolis算法的迭代。图1.1和图1.2描述了固体退火过程与模拟退火算法之间的相似性。
设
表示Metropolis算法第
次迭代时控制参数
的值,
表示控制参数更新函数,
表示终止温度。
表示Metropolis算法第
次迭代时产生的变换个数。下面最小化目标函数
为例,给出模拟退火算法的具体操作步骤:
- 设置初始温度
、终止温度
及控制参数更新函数
;
- 随机产生初始解
,以此作为当前最优点
,计算目标函数值
;
- 对当前最优点作一随机变动,产生一新解
,计算新解的目标函数值
,并计算目标函数值增量
;
- 若
,则接受该新解为当前最优点,
;若
,则以概率
的方式接受该新解为当前最优点;
- 若
,则
,转(4);
。设置
,令循环计数器初值
;
- 若
,则转(3);若
,则输出当前最优点,算法结束。
-
求解TSP的模拟退火算法模型可描述如下:
解空间:解空间S是遍访每个城市恰好一次的所有路经,解可以表示为{w1,w2 ,……, wn},w1, ……, wn是1,2,……,n的一个排列,表明w1城市出发,依次经过w2, ……, wn城市,再返回w1城市。初始解可选为(1,……, n) ;目标函数:目标函数为访问所有城市的路径总长度; 我们要求的最优路径为目标函数为最小值时对应的路径。
新路径的产生:随机产生1和n之间的两相异数k和m,不妨假设k<m,则将原路径(w1,w2,…,wk,wk+1,…,wm,wm+1,…,wn)变为新路径: (w1,w2,…,wm,wk+1,…,wk,wm+1,…,wn)
上述变换方法就是将k和m对应的两个城市在路径序列中交换位置,称为2-opt映射。 根据上述描述,模拟退火算法求解TSP问题的流程框图如下
图2 模拟退火算法的流程框图算例测试
现计划旅行我国各省的省会城市、直辖市及港澳台共34个城市,拟找到一条最短的旅行路线,即经典的旅行商问题模型。各程序文件的名称及功能说明如下表所示。文件名
功能说明
main.m
主程序文件
city2opt.m
函数:实现一条排列中两城市的随机位置交换
coordinate2distance.m
函数:实现根据坐标求出任两城市间的距离
sumdistance.m
函数:计算出一个城市排列的总距离
city.txt
34个城市坐标文件
name.txt
与坐标文件对应的城市名称文件
图3 模拟退火算法获得的最优路径图
模拟退火算法的应用很广泛,可以求解NP完全问题,但其参数难以控制,其主要问题有以下三点:(1)温度T的初始值设置问题。
温度T的初始值设置是影响模拟退火算法全局搜索性能的重要因素之一、初始温度高,则搜索到全局最优解的可能性大,但因此要花费大量的计算时间;反之,则可节约计算时间,但全局搜索性能可能受到影响。实际应用过程中,初始温度一般需要依据实验结果进行若干次调整。
(2)退火速度问题。
模拟退火算法的全局搜索性能也与退火速度密切相关。一般来说,同一温度下的”充分”搜索(退火)是相当必要的,但这需要计算时间。实际应用中,要针对具体问题的性质和特征设置合理的退火平衡条件。
(3)温度管理问题。
温度管理问题也是模拟退火算法难以处理的问题之一。实际应用中,由于必须考虑计算复杂度的切实可行性等问题,常采用如下所示的降温方式:
T(t+1)=k×T(t)
式中k为正的略小于1.00的常数,t为降温的次数。