文章目录
1.算法简介
\quad 模拟退火算法(Simulated Annealing,SA)的思想最早由N. Metropolis等人在1953年提出,1983年,S. Kirkpatrick等人成功地将退火思想引入到组合优化领域,该算法基于Monte-Carlo迭代求解策略,是一种随机寻优算法,其核心思想是物理中固体物质的退火过程与组合优化问题之间的相似性。
\quad 模拟退火算法是一种基于概率的随机优化算法,它尽管也是一种贪心算法,但其搜索过程引入了随机因素,使得算法在一定程度上能够接受较差的解,从而有可能跳出局部最优解,最终达到全局最优解。模拟退火算法通过以一定概率接受一个比当前解更差的解,避免陷入局部最优解。
\quad 在退火算法中,算法在找到局部最优解E后,可能会以一定的概率接受到F的移动,经过几次这样的非最优移动后,可能会到达G点,并进一步上升到H点,从而跳出局部最大值E。模拟退火算法来源于固体退火的原理,固体退火过程是将固体加热至高温,然后逐渐冷却,在加热过程中,固体内部的粒子变得无序,内能增大;在逐渐冷却的过程中,粒子趋于有序,并在每个温度下达到平衡态,最终在常温下达到基态,内能最小。
2.算法推导
2.1.Bolzman方程
\quad 设热力学系统S中有n个状态(有限且离散的),其中状态i的能量为 E i E_{i} Ei ,在温度 T k T_{k} Tk下,经一段时间达到热平衡,此时处在状态i的概率为:
P i ( T k ) = C k exp ( − E i T k ) P_i\left(T_k\right)=C_k\exp\begin{pmatrix}-E_i\\T_k\end{pmatrix} Pi(Tk)=Ckexp(−EiTk)
\quad 那么对于系数 C k C_{k} Ck我们应该如何确定?确定方法如下所示:
∑ j = 1 n P j ( T k ) = 1 ⇒ ∑ j = 1 n C k ⋅ exp ( − E j T k ) = 1 ⇒ C k ⋅ ∑ j = 1 n exp ( − E j T k ) = 1 ⟹ C k = 1 ∑ j = 1 n exp ( − E j T k ) \begin{aligned}&\sum_{j=1}^nP_j(T_k)=1\Rightarrow\sum_{j=1}^nC_k\cdot\exp\begin{pmatrix}-E_j\\T_k\end{pmatrix}=1\\&\Rightarrow C_k\cdot\sum_{j=1}^n\exp\begin{pmatrix}-E_j\\T_k\end{pmatrix}=1\Longrightarrow C_k=\frac1{\sum_{j=1}^n\exp\begin{pmatrix}-E_j\\T_k\end{pmatrix}}\end{aligned} j=1∑nPj(Tk)=1⇒j=1∑nCk⋅exp(−E