在2020年的全国大学生数学建模竞赛的A题中,第三问要确定面积最小的最优炉温曲线,这是一个有个优化变量的优化问题,由于优化变量太多,导致假若直接用搜索法求解的话,计算量会非常大。

一共5个优化变量,每个变量都进行20次搜索(搜索精度已经很小了)的话,就是要计算205次,假如计算一次需要0.05秒,也就是需要计算44小时以上。倘若再提高搜索的精度,则估计需要计算数天。

解决这个问题的其中一类方法就是用智能算法,包括模拟退火、遗传算法、蚁群算法、粒子群算法等等。

下面就来介绍一下比较适合于解这道题的模拟退火算法

模拟退火算法

模拟退火算法是属于贪心策略的算法,所谓贪心策略,就是总是做出在当前看来是最好的选择。而不是从整体最优上考虑,它得到的是某种意义下的局部最优解。因此,这种算法不是对所有的问题都能得到整体最优解,关键是选择什么样的贪心策略。

最基本的基于贪心策略的算法可以叫做爬上法,此算法是从当前解的附近解空间中去选择一个最优解作为当前解,一直这样重复,直到在附近的解空间中找不到更优解为止。因此这个算法很大的可能性找到的只能是局部最优解。

如下图所示:假设当前解是在C点,爬山算法搜索到A点这个局部最优解后就会停止搜索,因为在A点时,无论向哪个方向去小幅度移动都不能得到更优的解。

而我们的模拟退火算法实际上也是基于贪心策略的,只不过它在爬山法这种纯粹的贪心策略的基础上,又在搜索过程中加上了随机因素。这个随机因素的具体表示就是:该算法会以一定的概率来接受一个比当前解要差的解。于是也就有了跳出爬山法的局部最优解的可能。

还是以上面爬山法的图为例,模拟退火算法在到达局部最优解A后,会以一定的概率向E去移动。到达E点后,就会有可能到达D点,从而依据爬上法的思想,就会到达真正的全局最优解B点了。

模拟退火算法描述如下:

若K(Y(i+1))>=K(Y(i))(即移动后的第i+1处得到了更优解),则总是接受该移动。

若K(Y(i+1))<K(Y(i))(即移动后i+1处的解比当前解要差),则以一定的概率接受移动,且这个概率是随着时间推移逐渐降低(逐渐降低才能趋向稳定)。

那么怎么定义这个“一定的概率”呢?

实际上是参考了金属冶炼的退火过程,故而此算法被叫做模拟退火算法。

根据热力学的原理,在温度为T时,出现能量差为dE的降温的概率为P(dE),表示为:

P(dE)=exp(dE/(kT))

其中k是一个常数,exp表示自然指数,且dE<0。

此公式含义是:温度越高,出现一次能量差为dE的降温的概率就越大;温度越低,则出现降温的概率就越小。又由于dE总是小于0(因此叫退火),因此dE/kT<0,所以P(dE)的函数取值范围是(0,1)。

随着温度T的降低,P(dE)会逐渐降低。

我们将一次向较差解的移动看做一次温度跳变过程,我们以概率P(dE)来接受这样的移动。

因此可以将模拟退火算法与爬山算法对比成:

爬山算法:一只兔子朝着比当下所处的位置更高的地方跳。它逐步地跳到了不远处的最高山峰。但是这座山峰不一定就是整个解空间所在区域的最高山峰,它只是这只兔子目光所及的这一块区域的最高山峰。

模拟退火:一只兔子喝醉了。它随机地向各个方向跳了很长时间。这期间,它可能跳向比当下更高的地方,也有可能跳入比当下更低的地方。但是,等它逐渐地清醒了,会朝着最高的方向跳去。这种跳法更有可能会跳向最高的山峰。

此算法用流程图可以表示为:

伪代码表示:

s:=s0;e:=E(s)        //设定目前状态为s0,其能量E(s0)

k:=0                 //评估次数k

while k<kmax and e>emax

//若还有时间(评估次数k还不到kmax)且结果还不够好(能量e不够低)则:

sn:=neighbour(s)     //随机选取一临近状态sn

en:=Esn)             //sn的能量为E(sn)

if random()<P(e,en,temp(k/kmax))

then                 //决定是否移至临近状态sn

s:=sn; e:=en        //移至临近状态sn

k:=k+1               //评估完成,次数k加一

returns              //回转状态s

模拟退火算法的应用非常广泛,在经典的0-1背包问题上、图着色问题上、物流配送里的调度问题等各类的调度问题上等等,都能够使用。

在跨领域上,大规模集成电路设计(VLSI)问题里的布线布板等优化问题都会用到此算法。以及在最近几年非常火的神经网络上,如何避免梯度下降算法过程中陷入局部最优解很多时候都是可以用到模拟退火算法。还有图像处理以及各种组合优化问题都会用到。

数学建模必备算法之模拟退火算法相关推荐

  1. 数学建模必备算法模型,全新升级!

    转眼间2019年已经过去了四分之一,近日,2019年数学建模国赛的时间也已经出来啦,确定为9月12日(周四)18时至9月15日(周日)20时. 随着各种各样的数模比赛源源不断地开展,时不时有小伙伴私聊 ...

  2. 数学建模常用的十大算法

    1. 蒙特卡罗算法. 该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法. 2. 数据拟合.参数估计.插值等数据处理算法. 比赛 ...

  3. Python小白的数学建模课-17.条件最短路径算法

    条件最短路径问题,指带有约束条件.限制条件的最短路径问题.例如: 顶点约束,包括必经点或禁止点的限制: 边的约束,包括必经路段.禁行路段和单向路段:无权路径长度的限制,如要求经过几步或不超过几步到达终 ...

  4. 2021最全数学建模必备资料

    一.数学建模各种软件对比 (1)MATLAB[综合] 最为全面的数学建模软件,用处绝对不仅仅限于数学建模竞赛,在科研和工程中都有很多的应用,说是世界第一科学软件也不为过.无论是数值计算,还是运筹优化, ...

  5. matlab智能算法之模拟退火算法

    智能算法之模拟退火算法 1.起源 2.物理退火流程 2.1 加温过程 2.2 等温过程 2.3 冷却过程 2.4 组合优化与物理退化 3.原理 3.1 算法核心迭代 3.2 具体流程 4.案例 4.1 ...

  6. 【算法】模拟退火算法解决TSP问题的matlab实现

    [算法]模拟退火算法解决TSP问题的matlab实现 参考文章: (1)[算法]模拟退火算法解决TSP问题的matlab实现 (2)https://www.cnblogs.com/wenyehoush ...

  7. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  8. 爬山算法和模拟退火算法简介(转)

    源:爬山算法和模拟退火算法简介 一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法.爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为 ...

  9. 优化算法系列-模拟退火算法(1)——基本原理枯燥版本

    优化算法系列之模拟退火算法(1)--基本原理枯燥版本 推荐书籍--><智能优化算法及其MATLAB实例(第二版)> 知乎上的形象描述: 一个锅底凹凸不平有很多坑的大锅,晃动这个锅使得 ...

最新文章

  1. ROS踢出无线WIFI弱信号脚本
  2. 超越MobileNetV3,谷歌提出MobileDets:移动端目标检测新标杆
  3. C++实现大数的四则运算
  4. docker image镜像的发布
  5. python装饰器的案例_Python之装饰器的实例
  6. 巧用.mdb后缀数据库做后门
  7. 宝马奥迪工厂模式_宝马的完整形式是什么?
  8. java基础语法实例教程_Java 基础语法
  9. 为踏实上进的【飞鸽传书】开发者而感动
  10. 微信小程序隐藏菜单栏目下转发按钮的几个方法
  11. 毕业不到一年的前端开发同学的焦虑
  12. android (java) 网络发送get/post请求参数设置
  13. ENVI学习总结(六)——图像自动配准
  14. 热敏电阻制作温度传感器的c语言,NTC热敏电阻温度测量和控制系统.doc
  15. Ceph分布式存储系列(六):对象存储、块存储、文件存储的区别和优缺点
  16. HYSBZ 3991 寻宝游戏
  17. vuepress-theme-reco的安装与使用
  18. 【无限互联】iOS开发视频教程— 2.8 iPhone开发之swtch语句
  19. 连环锁 POJ - 1832(格雷码与二进制)
  20. 操作系统接口shell

热门文章

  1. 晶体封装越小esr越大_SuperFin晶体管技术加持!英特尔新一代10nm可媲美台积电5nm?...
  2. 深度学习和目标检测系列教程 10-300:通过torch训练第一个Faster-RCNN模型
  3. 【数据分析R语言系列】R语言函数与函数式编程、作用域和apply 家族
  4. 六十六,完成SpringBoot项目中的员工增删查改功能
  5. EM算法和GMM(上)
  6. 四十六、MongoDB数据库学习
  7. 自学机器学习、深度学习、人工智能学习资源推大聚合
  8. 从会议、医患沟通和客服对话三大场景看对话文本摘要技术
  9. 两个多元正态分布的KL散度、巴氏距离和W距离
  10. 对抗训练硬核分析:对抗样本与模型参数的关系