模拟退火

模拟退火

1.算法简介

当我们求解一个单峰函数时,可以使用爬山算法(或者梯度下降法),即根据当前位置的梯度大小来决定下一个位置,这样在单峰函数的情况下就能够最终稳定在峰值。但是当函数具有多个峰值时,爬山算法就会很容易陷入局部最优解。

模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。对于模拟退火来说,就是基于当前模拟的温度来改变对于随机解的接受程度:温度越高,越容易接受当前看起来不是最优的解。当然,也有概率得出不是最优的解,这就需要调整参数。

2.算法过程

模拟退火的核心是三个参数:

\(T_0\) 表示初始温度,一般是一个比较大的数

\(T_k\) 表示终止温度,是一个很接近0的数

\(\Delta\) 表示降温系数,是一个略小于1的常数

模拟退火就是利用这三个参数来模拟温度的变化。

\(T\) 来表示当前温度,每一次迭代时 \(T=T\times \Delta\) ,表示温度的下降,直到 \(T<T_k\) 时算法结束

与此同时,我们用 \(E_0\) 表示已知最优解, \(E\) 表示当前解, \(\Delta E=E-E_0\) 表示解变动量, \(E_1\) 表示上一次被接受的解。

我们更新解的过程如下:

\(T_0\) 开始,每一次迭代当前温度 \(T\) 都乘上 \(\Delta\) ,同时在 \(E_1\) 的基础上根据温度 \(T\) 扰动产生新解 \(E\) 。如果 \(E\)\(E_0\) 更优,则更新 \(E_0,E_1\);否则,根据Metropolis接受准则来概率性的接受新解并更新 \(E_1\)

Metropolis接受准则:假如我们要求函数最小值,则接受一个解的概率是

\[P=e^{-\frac{\Delta E}{T}} \]

我对他的理解就是,当 \(E\)\(E_0\) 更优时, \(\Delta E <0\)\(P>1\) ,表示必须接受这个解。

\(E\)\(E_0\) 更劣时, \(\Delta E > 0\)\(P<1\) ,表示有 \(P\) 的概率接受这个解。且 $|\Delta E| $ 越大, 新解劣的程度就越厉害,接受他的概率就越小。

一个通俗的动图:

posted @ 2023-07-17 16:43  小蒟蒻皮皮鱼  阅读(163)  评论(0)    收藏  举报