最优化——模拟退火算法
模拟退火算法
Metropoils接收准则
P = { 1 , E j ≤ E i e − E j − E i T E j ≥ E i P = \left\{ \begin{matrix} &1 ,\quad E_j\leq E_i\\ &e^{-\frac{E_j-E_i}{T}} E_j \geq E_i \end{matrix} \right. P={1,Ej≤Eie−TEj−EiEj≥Ei
其中,P为转移概率,T为温度, E j : E_j: Ej:新状态下的能量, E i : E_i: Ei:当前状态下的能量
当新状态下的能量小于原来状态的能量,那么一定会跳出
如果新状态的能量比原来状态能量低,则需要进一步的概率判定,能量差值越高,跳出的概率就越低。
温度越高,跳出概率越高。
要想开始时全局搜索,后期局部搜索需要: 前期温度高,后期温度不断变小。
注:有点类似于PSO中的权重设置
算法步骤
- 设置初始参数,起始温度T,终止温度,冷却率 α \alpha α,单一温度的迭代次数,随机生成初始解w,并计算目标函数值f(w).
- 随机设置一个扰动值,用扰动值去更新原始解得到新解 w ′ w' w′和其对应的目标函数值
- 如果新解函数值小于原始解,则新解被接收,否则需要用Metropoils准则去判断新解是否被接收。
- 完成2~3后迭代次数加1,判断此时是否达到单一温度下的迭代次数,如果达到执行下一步,否则继续转2
- 用冷却率去降低温度。判断当前温度是否达到最小温度,如果达到结束运算,否则重置迭代次数。转2。
应用
一元函数的优化
m i n f ( x ) = x s i n ( x ) , − 4 ≤ x ≤ 16 min \quad f(x) = xsin(x), -4\leq x \leq16 minf(x)=xsin(x),−4≤x≤16
算法流程:
- 初始温度设置为1000度,终止温度为0.1度,单一温度迭代次数为100次,初始解是-4到16范围内随机浮点数,定义目标函数值为f(x) = xsin(x)
- 随机生成一个扰动值,使得当前解加上扰动值得到新解,如果新解超出自变量范围,则减去两倍的扰动值。
- 如果新解函数值小于原始解,则新解被接收,否则需要随机生成一个概率r,只有当r小于 e − Δ E T e^{-\frac{\Delta E}{T}} e−TΔE时,新解才会被接收。
- 完成2~3后迭代次数加1,判断此时是否达到单一温度下的迭代次数,如果达到执行下一步,否则继续转2
- 用冷却率去降低温度。判断当前温度是否达到最小温度,如果达到结束运算,否则重置迭代次数。转2。
一元函数和多元求解过程差别不大,就不赘述了。
TSP问题
又是这个辣个男人!他又回来辣!
算法流程:
- 初始温度设置为100*城市数量度,终止温度为0.1度,单一温度迭代次数为100次,初始解就是顺序访问所给出的城市坐标。定义的目标函数值为初始解每两个相邻城市距离之和开根号。(注意:包括最后一个城市和第一个城市的相邻距离),算出初始解的函数值。
- 随机挑选两个城市,将他们的访问顺序互换生成一个新解。算出新解的函数值。
- 如果新解函数值小于原始解,则新解被接收,否则需要随机生成一个概率r,只有当r小于 e − Δ E T e^{-\frac{\Delta E}{T}} e−TΔE时,新解才会被接收。
- 完成2~3后迭代次数加1,判断此时是否达到单一温度下的迭代次数,如果达到执行下一步,否则继续转2
- 用冷却率去降低温度。判断当前温度是否达到最小温度,如果达到结束运算,否则重置迭代次数。转2。
备注:在查看老师给出的实例代码时发现了一个错误,在计算相邻城市距离之和时,在加入最后一个城市到第一个城市的距离平方之前已经将原来的求和结果开方,这种做法并不正确。应当一起求和之后开方。
总结
从上面两个例子我们可以看出,模拟退火本质就是双层循环,第一层遍历到最小温度,第二层遍历完当前确定温度下的迭代次数。模拟退火算法是一种随机算法,并不一定能找到全局的最优解,可以比较快的找到问题的近似最优解。 如果参数设置得当,模拟退火算法搜索效率比穷举法要高。
最优化——模拟退火算法相关推荐
- ML与Optimality:最优化理论(GD随机梯度下降/QN拟牛顿法/CG共轭梯度法/L-BFGS/TR置信域/GA遗传算法/SA模拟退火算法)在机器学习中的简介、常用方法、案例应用之详细攻略
ML与Optimality:最优化理论(GD随机梯度下降/QN拟牛顿法/CG共轭梯度法/L-BFGS/TR置信域/GA遗传算法/SA模拟退火算法)在机器学习中的简介.常用方法.案例应用之详细攻略 目录 ...
- 【数学建模】模拟退火算法(最优化)
文章目录 一.算法介绍 1. 退火 2.物理退火 3.模拟退火算法思想 二.适用问题 三.算法总结 1. 步骤 四.应用场景举例 五.MATLAB代码 六.实际案例 七.论文案例片段(待完善) 模拟退 ...
- 【最优化方法】穷举法 vs. 爬山法 vs. 模拟退火算法 vs. 遗传算法 vs. 蚁群算法
一. 穷举法 列举所有可能,然后一个个去,得到最优的结果.如图一,需要从A点一直走到G点,才能知道,F是最高的(最优解).这种算法得到的最优解肯定是最好的,但也是效率最低的.穷举法虽然能得到最好的最优 ...
- Python数模笔记-模拟退火算法(2)约束条件的处理
1.最优化与线性规划 最优化问题的三要素是决策变量.目标函数和约束条件. 线性规划(Linear programming),是研究线性约束条件下线性目标函数的极值问题的优化方法,常用于解决利用现有的资 ...
- 【运筹优化】元启发式算法详解:模拟退火算法(Simulated Annealing,SA)+ 案例讲解代码实战
文章目录 一.介绍 二.基础知识 2.1 局部搜索(或蒙特卡罗)算法 2.2 Metropolis 算法 2.3 模拟退火算法 三.原理 3.1 Statistical Equilibrium 统计平 ...
- 优化算法系列-模拟退火算法(1)——基本原理枯燥版本
优化算法系列之模拟退火算法(1)--基本原理枯燥版本 推荐书籍--><智能优化算法及其MATLAB实例(第二版)> 知乎上的形象描述: 一个锅底凹凸不平有很多坑的大锅,晃动这个锅使得 ...
- 模拟退火算法(Simulated Annealing,SA)的全面讲解及python实现
https://blog.csdn.net/Trisyp/article/details/104953406 抽象来源:美国物理学家Metropolis等人在1953年发表研究复杂系统,计算其中能量分 ...
- [算法学习]模拟退火算法(SA)、遗传算法(GA)、布谷鸟算法(CS)、人工蜂群算法(ABC)学习笔记---附MATLAB注释代码
目录 1.模拟退火算法(Simulated Annealing,SA) 1.1 本质: 1.2 算法思想 1.3 SA流程图 1.4 模拟退火过程 1.5 SA解决TSP问题 1.6 SA改进方向 1 ...
- python 物理公式计算_模拟退火算法(Simulated Annealing,SA)的全面讲解及python实现...
https://blog.csdn.net/Trisyp/article/details/104953406 抽象来源:美国物理学家Metropolis等人在1953年发表研究复杂系统,计算其中能量分 ...
最新文章
- 漫话:如何给女朋友解释为什么一到年底,部分网站就会出现日期混乱的现象?...
- [20150705]从AWR抽取有问题的sql语句.txt
- MySQL中实现rownum功能类似的语句
- 4. jQuery 事件
- SpringBoot下实现PDF转word(Maven项目)
- 直播app系统源码,简单的登录界面(登录、注册、记住密码等按键)
- 【生信技能树2020-10-31】单细胞数据挖掘学习笔记-1.1 下载、探索数据
- 微信淘宝客机器人分享
- pip镜像网站及使用方法
- Switch语句:空指针异常
- laravel 条形码
- 超详细的网络抓包神器 tcpdump 使用指南
- 我们开发了一款待办事项分享平台——待办库(Todo Store)
- [LOJ#6617][THUPC2019]摆家具(矩阵乘法 + 子集和变换)
- kali linux 命令
- ARM 安装中文输入法
- OSError: [WinError 87]参数错误
- 解决npm ERR gyp ERR
- 距离全球边缘计算大会还有1400小时!
- 计算机辅助工业设计简化功能的作用,计算机辅助工业设计CAID-天津大学研究生e-Learning平台.PDF...