模拟退火解决TSP问题
模拟退火
https://mp.weixin.qq.com/s?src=11×tamp=1633564978&ver=3359&signature=oeLMbNZi60Gx-baHgTPJS4QIeh8PLL8Nheac1YVk4WDZnidYsaoJp2MMfodUApT1ndZxC35VP87Ks3TGHZA*bfzejguOpSKZ5cqX6XGUnM–AUQqrr50Hprkf8Qy&new=1
1.金属退火的原理
金属退火是将金属加热到一定温度,保持足够时间,然后以适宜速度冷却(通常是缓慢冷却,有时是控制冷却)的一种金属热处理工艺。模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温度升高变为无序状,内能增大;而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。
2.模拟退火核心思想
模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合一定的概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。
这里的“一定的概率”的计算参考了金属冶炼的退火过程,这也是模拟退火算法名称的由来。将温度T当作控制参数,目标函数值f视为内能E,而固体在某温度T时的一个状态对应一个解,然后算法试图随着控制参数T的降低,使目标函数f(内能E)也逐渐降低,直至趋于全局最小值(退火中低温时的最低能量状态)。
3.模拟退火数学原理
从上面我们知道,会结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,那么具体的更新解的机制是什么呢?如果新解比当前解更优,则接受新解,否则基于Metropolis准则判断是否接受新解。接受概率为:
y = { 1 E t + 1 < E t e − ( E t + 1 − E t ) k T E t + 1 >= E t y = \left\{ \begin{array}{ll} 1 & \textrm{$E_{t+1}$<$E_{t}$}\\ e^{-\frac{(E_{t+1}-E_{t})}{kT}} & \textrm{$E_{t+1}$>=$E_{t}$} \end{array} \right. y={
1e−kT(Et+1−Et)Et+1<EtEt+1>=Et
如上公式,假设当前时刻搜索的解为 x t x_{t} xt,对应的系统能量(目标函数)为 E t E_{t} Et,对搜索点施加随机扰动,产生新解 x t + 1 x_{t+1} xt+1,相应地,系统能量为 E t + 1 E_{t+1} Et+1,那么系统对搜索点从 x t x_{t} xt到 x t + 1 x_{t+1} xt+1转变的接受概率就为上公式。
4.模拟退火的流程
算法实质分两层循环,在任一温度水平下,随机扰动产生新解,并计算目标函数值的变化,决定是否被接受。由于算法初始温度比较高,这样,使E增大的新解在初始时也可能被接受,因而能跳出局部极小值,然后通过缓慢地降低温度,算法就最终可能收敛到全局最优解,具体流程为:
- 令 T = T 0 T=T_{0} T=T0,表示开始退火的初始温度,随机产生一个初始解 x 0 x_{0} x0,并计算对应的目标函数值 E x 0 E_{x_{0}} Ex0;
- 令 T = k T T=kT T=kT,其中k取值0到1之间,为温度下降速率;
- 对当前解 x t x_{t} x

本文介绍了模拟退火算法解决旅行商问题的原理、思想和数学模型。模拟退火算法从较高温度开始,通过随机扰动在解空间中寻找目标函数的全局最优解,最终在较低温度时收敛。旅行商问题要求找到经过每个城市一次并返回起点的最短路线。文章还给出了算法流程、Python实现和运行结果。
最低0.47元/天 解锁文章
2740

被折叠的 条评论
为什么被折叠?



