当前位置:   article > 正文

数学建模【模拟退火】

数学建模【模拟退火】

一、模拟退火简介

模拟退火的基本思想,就是走出舒适圈,多去“试一试”,万一成了呢?

  • 舒适区:当前处于局部最优解
  • 试一试:随机试探新解,有更好的解就直接选择新解,没更好的则以一定概率选择新解
  • 万一成了:找到了更优甚至最优解
  • 也可能没成:求的新解反而更差了
  • 一次没成,多试几次:继续随机试探

说到模拟退火,就要从贪心算法失效开始。这里以爬山为例子

  • 假如小魏想要在日落前爬.上一座山的最高峰(求最优解)
  • 但山中云雾缭绕、视野受限,只能看到当前位置附近一-定范围内的情况
  • 贪心算法:在视野内选取一个点,如果更高,就过去;否则就不去
  • 直到视野内没有更高的点,则输出当前解作为最终解
  • 显然,当小魏走到某个小山峰时,四周看不到更高的点,就不会走下山去寻找更高的山峰从而陷入了局部最优解

但是以模拟退火的思想

  • 那么在可见范围内,随机选择一点
  • 如果该点比当前位置更高,就直接去该点(优化)
  • 如果该点更低,那么就多掷几次硬币,结合该点与当前点的高度差决定去不去(一定概率)
  • 在刚才的局部最优解的山峰,会有一定概率走下了当前山峰,从而发现另一个山峰的上坡
  • 从而就有可能走上新的更高峰

模拟退火的关键点

  • 时间有限,需设置终止条件(“退火”过程中温度不断降低,剩余时间不多时就别乱跑)
  • 且算法需要做到:若当前所处的山峰越高,前往低点的概率越低(概率的表达式)
  • 这样才能使求得最优解的概率更大
  • 关键在于,“概率”怎么求

二、适用赛题

NP-hard问题

  • 旅行推销员问题(Travelling salesman problem,TSP):给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路
  • TSP问题是组合优化中的一个NP-hard问题,该问题的可行解是所有顶点的全排列,随着顶点数的增加,会产生组合爆炸,传统算法难以求解
  • 此时就适合用模拟退火等启发式算法求近似解

适用赛题特点

  • 有些规划类问题的可行解过多,传统算法运算时间过长
  • 能够列出可行解的任一排列(例如题目要求最短回路,起码能先写出个回路作为初始化)

国赛题目:高等教育学费标准

  • 假设高校所需1000万经费,涉及多种筹款路径,理论上的筹款组合方案过多,若暴力求解可能费时几十小时,此时就适合模拟退火求解

三、模型流程

四、流程分析

这里以一个例题贯穿流程分析:遍历全国省会

  • 已知全国34个省会城市(包括直辖市、自治区首府和港澳台)的经纬度坐标(第一个为北京)
  • 现在需要从北京出发,到所有城市视察
  • 要求每个城市只能到达一次,并最终回到北京
  • 求视察路线方案,使得总路径最短

问题分析

  • 若把所有可能的路线方案都列出来再求最小值,则有33! 种方案
  • 这是10的36次方数量级,运算时间会很长
  • 此时可考虑使用模拟退火

所有可行解

  • 本题的解空间就是固定起点和终点的所有可行路线的集合
  • 题目要求以北京作为起点和终点,那么设起点北京为1号城市x1
  • 余下需要遍历的33个城市依次设为2,3,.... 34号城市x34
  • 最后还需回到北京,设终点北京为35号城市x35
  • 因为起点与终点固定,则共有33!个可行解
1.目标函数

这道题的目标是总路程最短

  • 从1号x1出发遍历34个城市最后回到1号x35
  • 第i号城市xi与第i+1号城市xi+1之间的路径长度设为dxixi+1

则目标函数:

2.初始化
  • 设定一个初始温度T0和问题的一个初始解x(0)
  • 有那么多种可行解,可以随便选一个作为初始解
  • 例如本题,可以把原始数据的排列直接作为初始解,解为x1x2 x...... x35
  • 或利用蒙特卡罗法求一个较好的初始解
3.是否结束

这里是否结束有两个方面

同一温度是否结束,指的是在一个相同温度情况下,进行了多次产生新解,是否接受的过程,比如设置的一个温度进行100次,那么在进行100次后,这个温度下的操作就完成了,需要将温度按照一定比例下降,然后重复刚刚的操作。

温度是否足够小

在退火过程中需要选定降温系数α,求得新温度Ti+1 = αTi,一般都是设为0.999。直到温度足够小,设终止温度为e = 10的负30次方,当T < e时终止迭代,输出最终解

在退火过程足够慢,每个温度下寻找新解的次数足够多,则最终解是全局最优解的概率越大

4.产生新解

在当前温度Ti下随机求一个新解,制定产生新解的准则不唯一,能确保随机即可

5.计算差值判断接受

当有了新解,需要判断是新解好还是当前解好,所以需要计算两个解的值,本题就是计算两个解的路程,然后用新解的路程减去当前解的路程得到差值△f

接下来判断是否接受新解

  • 接受准则

  • 表达式中判断准则exp(- △f/Ti)是由热力学得到的灵感,这里不作讲解
  • 题目求总路径最短,如果△f < 0意味新解的总路径更短,则接受新解作为当前解
  • △f > 0意味新解总路径更长不如当前解, 但为防止陷入局部最优解,仍以一定概率接受新解
  • 显然,△f越小, 意味着新解的总路径比当前解的总路径短更多,那么接受新解的概率就更大

五、补充

理论上模拟退火可以找到全局最优,不过此证明需要深厚的数学功底。这里不作讲解。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/145730
推荐阅读
相关标签
  

闽ICP备14008679号