智能算法之模拟退火算法
创始人
2024-03-13 17:51:11
0

智能算法之模拟退火算法

    • 1.起源
    • 2.物理退火流程
      • 2.1 加温过程
      • 2.2 等温过程
      • 2.3 冷却过程
      • 2.4 组合优化与物理退化
    • 3.原理
      • 3.1 算法核心迭代
      • 3.2 具体流程
    • 4.案例
    • 5.代码实现
    • 6.优缺点及可改进方向

1.起源

模拟退火算法来源于热力学中固体物质的退火冷却过程 (退火是一种金属热处理工艺,指的是将金属缓慢加热到一定温度,保持足够时间,然后以适宜速度冷却)

2.物理退火流程

模拟退火的算法思想是参考物理退火的过程而来,物理退火的过程为:加温过程 -> 等温过程 -> 冷却过程

2.1 加温过程

通过加温,增强粒子的热运动,让各部分变得均匀。当温度足够高时,固体将熔解为液体,从而消除原先系统中可能存在的非均匀状态,保证后续进行的过程是从平衡态开始,由于是加温过程温度上升,所以该过程系统能量增加。

2.2 等温过程

对于与周围环境交换热量而温度保持不变的封闭系统,系统状态的自发变化总是朝着自由能减少的方向进行,当自由能达到最小时,系统达到平衡态

2.3 冷却过程

通过一定速率对液体进行冷却,减弱粒子的热运动并趋于有序,在每个温度都达到平衡态,最后在常温时达到基态,能量减为最小,从而得到低能态的晶体结构

2.4 组合优化与物理退化

组合优化物理退火
粒子状态
最优解能量最低态
设定初温熔解过程
MetropolisMetropolisMetropolis 抽样过程等温过程
控制参数下降冷却过程
目标函数能量

3.原理

模拟退火算法的基本原理:对于目标函数 f(X)f(X)f(X)、自变量为 XXX 的 nnn 维极小化问题(极大化问题乘以−1-1−1转化为极小化问题),初值 X0X_0X0​ 可以随机化或者自己设置。

3.1 算法核心迭代

设 fk,fk+1f_k,f_{k+1}fk​,fk+1​ 分别为目标函数在第 kkk 次和第 k+1k+1k+1 次迭代值,即 fk=f(Xk),fk+1=f(Xk+1)f_k=f(X_k),f_{k+1}=f(X_{k+1})fk​=f(Xk​),fk+1​=f(Xk+1​)。
若 fk>fk+1f_k>f_{k+1}fk​>fk+1​,则接受 Xk+1X_{k+1}Xk+1​ 作为下一次迭代的初值继续进行运算,直至满足终止条件(收敛或者迭代次数耗尽);
若 fk接受概率公式如下:p=exp(−fk+1−fkT)p=exp(-\frac{f_{k+1}-f_k}{T})p=exp(−Tfk+1​−fk​​) 其中 TTT 为控制参数,在模拟退火算法中,TTT 必须缓慢减少,避免变化过快,导致优化陷入极值点。

3.2 具体流程

以求解极小值问题为例:
(1)(1)(1)设定初始温度 TTT,迭代次数 LLL,误差 ϵ\epsilonϵ,初始解 X0X_0X0​,得到目标函数f(X0)f(X_0)f(X0​);
(2)(2)(2)循环进行迭代,k=1,⋯,Lk=1,\cdots,Lk=1,⋯,L;
(3)(3)(3)根据当前温度得到新解 X′X'X′(第一个可以随机生成), 代入 f(X)f(X)f(X) 得到 f(X′)f(X')f(X′);
(4)(4)(4)若 f(X)>f(X′)f(X)>f(X')f(X)>f(X′),则接受 X′X'X′ 作为下一次迭代的初值,若 f(X) (5)(5)(5)若满足终止条件,则输出当前最优解 X′X'X′,终止条件;
(6)(6)(6)TTT 减小,然后回到流程(2)(2)(2),在当前温度下继续循环迭代,执行步骤(3,4,5)(3,4,5)(3,4,5);
(7)(7)(7)注意,这里的终止条件可以有多个,比如:迭代次数耗尽、满足最优解、温度降低到一定值、新目标函数与原先目标函数的误差小于 ϵ\epsilonϵ。

4.案例

5.代码实现

6.优缺点及可改进方向

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...