零基础学启发式算法-模拟退火 (Simulated Annealing)

Posted 软件工程小施同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零基础学启发式算法-模拟退火 (Simulated Annealing)相关的知识,希望对你有一定的参考价值。

一、模拟退火 (Simulated Annealing)

模拟退火 (Simulated Annealing) 其实是一种贪心算法,但是它的搜索过程引入了随机因素。模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。

模拟退火算法源自于对热力学中退火过程的模拟,在给定一个初始温度下,通过不断降低温度,使得算法能够在多项式时间内得到一个近似最优解。

二、模拟退火算法的步骤描述如下:

对于一个优化问题 min f(x),

  1. 给定一个初始可行解 x0,初始温度 T0 和终止温度 Tf,令迭代计数为 k。

  2. 随机选取一个邻域解 xk,计算目标函数增量 Δf=f(xk)−f(x)。

    若 Δf<0,则令 x=xk;

    否则生成随机数 ξ=U(0,1),若随机数小于转移概率 P(Δf,T),则令 x=xk。

  3. 降低温度 T。

  4. 若达到最大迭代次数 kmax 或最低温度 Tf,则停止算法

    否则转至步骤 2。

整个算法的伪代码如下:

流程图

在进行邻域搜索的过程中,当温度较高时,搜索的空间较大,反之搜索的空间较小。

类似的,当 Δf>0 时,转移概率的设置也同当前温度的大小成正比。

三、常用的降温函数有两种:

  1. Tk+1=Tk∗r,其中 r∈(0.95,0.99),r 设置的越大,温度下降越快。

  2. Tk+1=Tk−ΔT,其中 ΔT 为每一步温度的减少量。

https://leovan.me/cn/2019/04/heuristic-algorithms/

https://www.sohu.com/a/161813051_206216

https://blog.csdn.net/weixin_42398658/article/details/84031235

以上是关于零基础学启发式算法-模拟退火 (Simulated Annealing)的主要内容,如果未能解决你的问题,请参考以下文章

python模拟退火(Simulated Annealing)参数寻优实战

Python使用模拟退火(Simulated Annealing)算法构建优化器获取机器学习模型最优超参数组合(hyperparameter)实战+代码

数学建模暑期集训23:模拟退火算法

数学建模暑期集训23:模拟退火算法

R语言基于模拟退火(Simulated Annealing)进行特征筛选(feature selection)

模拟退火算法解决旅行商问题(TSP)