首页 > 其他分享 >如何用随机方法求解组合优化问题(五)

如何用随机方法求解组合优化问题(五)

时间:2023-08-17 21:14:04浏览次数:41  
标签:函数 求解 退火 算法 随机 接受 优化 温度

模拟退火算法

这是一篇笔记,是对于B站up主马少平的视频(第四篇 如何用随机方法求解组合优化问题(五))的学习与记录。

前置知识回顾

【回顾】:局部最优问题

image-20230817184313556

在局部搜索问题中,可能会陷入局部最优解(如上图中的B、C),解决思路是:以概率接受差解

【回顾】:退火过程中

从状态 \(i\) 转换为状态 \(j\) 的转换准则:

  • 如果 \(E(j)\le E(i)\),则状态转换被接受;

  • 如果 \(E(j)>E(i)\),则状态转移被接受的概率为:

    \[e^{\frac{E(i)-E(j)}{KT}} \]

根据上述特点,可以发现局部搜索和退火过程存在一定关联,可以尝试将局部搜索与退火过程结合用于求解组合优化问题。

组合优化问题与退火过程的类比

image-20230817185005389

算法设计

基本思想

在局部搜索算法中,从领域中随机选择一个解 \(j\) ,如果该解的指标函数好于当前解 \(i\) 的指标函数,则以概率1接受该解,否则按照以下概率接受该解:

\[e^{\frac{f(i)-f(j)}{t}} \]

这里假定求解最小解,其中 \(f(i)\) 为解 \(i\) 的指标函数,\(t\) 为控制参数,也称作温度。

伪代码

  1. 随机选择一个解 \(i\),\(k=0\),\(t_0=T_{\max}\)(初始温度),计算指标函数 \(f(i)\).
  2. \(t=t_k\),如果满足结束条件,则转(15).
  3. Begin
  4.   如果在该温度内达到了平衡条件,则转(13).
  5.   Begin
  6.     从 \(i\) 的领域 \(N(i)\) 中随机选择一个解 \(j\) .
  7.     计算指标函数 \(f(j)\).
  8.     如果 \(f(j)\le f(i)\),则接受 \(j\),\(i=j\),\(f(i)=f(j)\),转(4).
  9.     否则计算 \(P_{i\Rightarrow j}(t)=e^{-\frac{f(j)-f(i)}{t}}\)
  10.       如果 \(Random(0, 1)<P_{i\Rightarrow j}(t)\),则接受 \(j\),\(i=j\),\(f(i)=f(j)\).
  11.     转(4).
  12.   End
  13.   对 \(t\) 降温,\(t_{k+1}=Drop(t_k)\),\(k=k+1\),转(2).
  14. End
  15. 输出结果.
  16. 结束.

分析

  • 首先随机选择一个解,比如旅行商问题中,先随机生成一条路线。
  • 初始温度需要设置一个较大的数,这是因为“接受较差的解”的概率与温度有关,初始温度设置较大在某种程度上可以帮助跳出局部最优解,而提高了找到全局最优解的可能性。
  • 指标函数用于衡量解的优良性,比如在旅行商问题中是“路线长度”。
  • 算法包含内外两层循环:
    • 内循环为“保持温度不变,在邻域内按照退火的特点,尝试找到可以接受的解”。如果是好解则直接接受,如果是差解则按概率接受。
    • 外循环负责“降温”,每次降温后,如果还没达到平衡条件,则继续寻找解。

以上只是算法的简单框架,还有一些问题需要解决。

算法需要解决的问题

  1. 初始温度 \(t_0\)
  2. 温度 \(t\) 的衰减函数
  3. 算法的终止标准
  4. 每个温度 \(t\) 下的马尔可夫链长度 \(L_k\)

只有这些参数确定之后,算法才算完整,才能用于解决实际问题。

算法性质

与退火过程一样,当满足条件时:

  • 初始温度足够高
  • 在每个温度下状态的交换足够充分
  • 温度 \(t\) 的下降足够缓慢

模拟退火算法以概率1收敛到最优解。

标签:函数,求解,退火,算法,随机,接受,优化,温度
From: https://www.cnblogs.com/feixianxing/p/combinatorial-problem-random-method-solution-5.html

相关文章

  • MySQL-进阶篇 ( SQL 优化:插入 + 主键 + order by + group by + limit + count + updat
    MySQL-进阶篇(SQL优化)目录MySQL-进阶篇(SQL优化)SQL优化插入数据index批量插入手动提交事务主键插入大批量插入数据主键优化页分裂页合并主键设计原则orderby优化Usingfilesort:Usingindex:优化注意:groupby优化未创建索引时:创建索引后:优化limit优化count优化一......
  • MySQL 8.0 参考手册——8.2优化 SQL 语句(二)
    8.2.1.13条件过滤  8.2.1.14恒定折叠优化8.2.1.15ISNULL优化8.2.1.16ORDERBY优化8.2.1.17GROUPBY优化8.2.1.18DISTINCT优化8.2.1.19LIMIT查询优化8.2.1.20函数调用优化8.2.1.21窗口函数优化8.2.1.22行构造表达式优化8.2.1.23避免全表扫描......
  • 【技术积累】MySQL优化及进阶
    MySql优化及进阶一、MySQL体系结构连接层:是一些客户端和链接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信服务层:大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行引擎层:负责了MySQL中数据的存储和提取,服......
  • 如何用随机方法求解组合优化问题(四)
    模拟退火算法中的退火过程是什么这是一篇笔记,是对于B站up主马少平的视频(第四篇如何用随机方法求解组合优化问题(四))的学习与记录。这篇笔记还没有介绍到模拟退火算法,而是记录退火这一物理过程以及相关的公式。最主要的内容是如何将退火过程的特点迁移到后续的算法设计中。退......
  • 使用数据库的优化版php登陆系统
    title:使用数据库的优化版php登陆系统date:2023-07-3112:56:41categories:CTF-Web入门description:数据库优化版本在学习了MySQL以后,我尝试在原来的简易登陆系统上加入数据库。因为原来的账号密码都存在php文件的数组里嘛,现在存在了数据库里。网站依旧是用phpstudy集成......
  • 国标GB28181视频平台EasyGBS国标平台针对数据库删除级联数据后的无效数据进行优化的具
    EasyGBS国标视频云服务可支持通过国标GB28181协议将设备接入,实现视频的实时监控直播、录像、语音对讲、云存储、告警、级联等功能,同时也支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等格式。同时EasyGBS平台也支持海康Ehome协议及SDK等......
  • 数值分析MATLAB 实践 常微分方程求解
    数值分析算法MATLAB实践常微分方程求解Euler法及改进算法function[x,y]=euler(fun,a,b,h,y0)%一阶常微分方程的一般表达式的右端函数:fun%显示欧拉格式%f是带求函数的一阶导形式%a,b分别是自变量取值上下限%y0是初始条件y(0)%h是步长 s=(b-a)/h;%求步数......
  • Java获取控制台输出信息(优化版)
    1.问题来源    项目中有个新需求,需要将某个方法从控制台输出的信息抓取后保存起来保存到数据库表中或者一个文件中,并且不能影响原先控制台打印信息的展示。因此基于《Java获取控制台输出信息》对实现方法做了进一步优化,以实现以上需求。   这里仍然是两个示例,一个用......
  • 形象谈JVM-第三章-即时编译器优化技术
    即时编译器优化技术一览:相信许多同学看完这个表格,脑子里面嗡嗡的,这些名字也是晦涩难懂,要实现这些优化的技术确实有比较大的难度,但是咱们只是学习,去理解这些技术,其实并不难,下面咱们直接开讲。首先需要明确一点的,作者是为了讲解方便,使用java的语法来表示优化技术所发挥出来的作......
  • Java编译优化
    (文章目录)前言编译优化是现代编译器技术的重要组成部分,它通过对代码进行分析和优化,可以使程序在运行过程中减少资源占用,大大提高程序的执行效率和性能。下面通过一个故事来深入地理解编译优化的重要性和实际应用。故事开始于一个著名的互联网公司,该公司的网站在访问量高峰期经......