【计算智能】读书笔记 第十章节 Part1 模拟退火算法

news/2024/5/5 7:36:19/文章来源:https://blog.csdn.net/LeungSr/article/details/127326256

文章目录

  • 1. 算法思想
    • 概念对照
  • 2. 算法基本流程
    • 算法流程图
    • 伪代码
    • 2.1 初始温度
    • 2.2 领域函数
    • 2.3 接收概率
    • 2.4 内层平衡
    • 2.5 终止条件
  • 写在最后


1. 算法思想

模拟退火 (Simulated Annealing , SA) 算法的基本思想 早在 1953 年就巳经由Metropolis 提出

模拟退火算法的思想来源于物理退火原理:

加温时体内部粒子随着温度的升高而变为无序状态,内能增大,而徐徐冷却时粒子渐趋有序,如
果降温速度足够慢,那么在每个溫度下,粒子都可以达到一个平衡态,最后在常温时达到基态,内能减少到最小。

粒子在某个温度时,固体所处的状态具有 定的随机性,而这些状态之间的转换能否实现由 Metropolis 准则决定。公式如下所示:

PijT={1,E(j)⩽E(i)e−(E(j)−E(i)KT)=e−(ΔEKT),其他 P_{i j}^T= \begin{cases}1, & E(j) \leqslant E(i) \\ \mathrm{e}^{-\left(\frac{E(j)-E(i)}{K T}\right)}=\mathrm{e}^{-\left(\frac{\Delta E}{K T}\right),} & \text { 其他 }\end{cases}PijT={1,e(KTE(j)E(i))=e(KTΔE),E(j)E(i) 其他 

如果变化是朝着减少系统能量的方向进行的,那么就接受该变化,否则以一定的概率接受这种变化(指方向变化往能量大的方向进行)

随着温度的降低,能量增加的状态将变得更难被接受

概念对照

退火过程模拟退火算法
物体内部的状态问题的解空间(所有可行解)
状态的能量解的质量(适应度函数值)
温度控制参数
熔解过程设定初始温度
退火冷却过程控制参数的修改(温度参数的下降)
状态的转移解在邻域中的变化
能量最低状态最优解

2. 算法基本流程

算法流程图

在这里插入图片描述

伪代码

//功能 模拟退火算法伪代码
//说明 本例以求问题最小 为目标
//参数 为初始温度 为内层循环次数
procedure SA //Initialization Randomly generate a soluti on Xi, and calculate its fitness value f(x_0);X_best = O; k= 0; t_k = T; while not st op // The search loop under the temperature t_k for i = 1 to L: // The l oop times Generate a new solution X_new, based on the current solution X_k, and calculate its fitness value f(X_new) if f(X_new)< f(X_k) X_k = X_new;if(Xk) < (X_best) X_best = Xk;continues; end if CalculateP(tk) = exp((f(X_new) - f(X_k)) / (t * K)) ; if random(O, 1) < P X_k= X_new;end if end for // Drop down the temperature t_(k+1) = drop (t_k);k = k + 1; end while print X_best 
end procedure

从流程图中可以看到模拟退火具有两层循环,内循环模拟的是在给定的温度下系统达到热平衡的过程。在该循环中,每次都从当前解 iii 的邻域中随机找出一个新解 jjj, 然后按照 Metropolis 准则概率地接受新解。

算法中的 random⁡(0,1)\operatorname{random}(0,1)random(0,1) 是指在区间 [0,1][0,1][0,1] 上按均匀分 布产生一个随机数, 而所谓的内层达到热平衡也是一个䈼统的说法, 可以定义为循环一定的代数, 或者基于接受率定义平衡等。

算法的外层循环是一个降温的过程, 当在一个温度 下达到平衡后, 开始外层的降温,然后在新的温度下重新开始内循环。降温的方法可以根 据具体问題具体设计, 而且算法流程图中给出的初始温度 TTT 也需要算法的使用者根据具 体的问题而制定。

2.1 初始温度

初温越大,获得高质量解的几率越大,但花费的计算时间将越多

  • 均匀抽样一组状态, 以各状态目标值的方差为初溫;
  • 随机产生一组状态, 确定两两状态间的最大目标值差 ∣Δmax⁡∣|\Delta \max |∣Δmax, 然后依据差值, 利 用一定的函数确定初温。例如, t0=−Δmax⁡/prt_0=-\Delta \max / p_rt0=Δmax/pr, 其中 prp_rpr 为初始接受概率;
  • 利用经验公式给出初始温度。

2

2.2 领域函数

邻域函数(状态产生函数)应尽可能保证产生的候选解遍布全部解空间,通常由两部分组成,即 生候选解的方式和候选解产生的概率分布

2.3 接收概率

从一个状态 XkX_kXk (一个可行解) 向另一个状态 Xnew X_{\text {new }}Xnew  (另一个可行解)的转移概率
它与当前的温度参数 tkt_ktk 有关, 随温度下降而减小。

指从某一较高温状态 t0t_0t0 向较低温状态冷却时的降温管理表, 或者说降温方式。假设时刻 kkk 的温度用 tkt_ktk 来表示, 则经典模拟退火算法的降温方式为
tk=t0lg⁡(1+k)t_k=\frac{t_0}{\lg (1+k)} tk=lg(1+k)t0
而快速模拟退火算法的降温方式为 :
tk=t01+kt_k=\frac{t_0}{1+k} tk=1+kt0
这两种方式都能够使得模拟䢐火算法收敛于全局最小点。

2.4 内层平衡

内层平衡也称 Metropolis 抽样稳定准则,用于决定在各温度下产生候选解的数目

2.5 终止条件

算法终止准则, 常用的包括以下儿项。

  • 设置终止温度的阈値;
  • 设置外循环迭代次数;
  • 算法搜索到的最优值连续若干步保持不变;
  • 检验系统熵是否稳定。

写在最后

各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟!
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_23450.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python序列的应用

序列 在python中&#xff0c;序列结果主要有列表&#xff0c;元组&#xff0c;集合&#xff0c;字典和字符串&#xff0c;对于这些序列结果有以下几个通用的操作。其中&#xff0c;集合和字典不支持索引&#xff0c;切片&#xff0c;相加和换乘操作 1.索引 序列中的每一个元…

为什么妈妈带娃容易崩溃,托班老师带那么多娃却不会?

很多家长都会有这个疑问&#xff1a;为什么托班的老师带这么多小朋友都能带得很好&#xff0c;而自己平时就带一个&#xff0c;却也架不住孩子各种作妖&#xff0c;分分钟就崩溃了&#xff1f; 因为身份不同。爱幼儿是老师们的天职&#xff0c;而爱孩子是母亲的天性。当这两种…

2022 年 TI 杯大学生电子设计竞赛具有自动泊车功能的电动车(B 题)

2022 年 TI 杯大学生电子设计竞赛具有自动泊车功能的电动车&#xff08;B 题&#xff09; 1.任务 设计制作具有自动泊车功能的电动车&#xff0c;可在图 1 所示的作品测试泊车场地上&#xff0c;分别独立完成“倒车入库/出库”或“侧方入库/出库”的单项操作&#xff0c;也可…

网络——TCP流量控制相关题目

一般来说&#xff0c;我们总希望数据传输的快一些。 但如果发送方把数据发送得过快&#xff0c;接收方就可能来不及接收&#xff0c;这就会造成数据的丢失。 流量控制&#xff08;flaw control&#xff09;就是让发送方的发送速率不要太快&#xff0c;要让接收方来得及接收。 利…

网课答案在线查题公众号搭建

网课答案在线查题公众号搭建 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xf…

Vue2:网易云播放音乐并实现同步一次显示一行歌词

目录一、项目数据API接口地址二、实现播放页面效果三、实现思路四、实现思路代码1、发送ajax请求获取歌词2、 处理歌词格式3、判定该显示哪句歌词4、代码部分五、整个页面完整代码一、项目数据API接口地址 API地址&#xff1a;https://neteasecloudmusicapi.js.org/#/ API文档…

[附源码]Java计算机毕业设计SSMjava抽奖系统设计

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Qt-FFmpeg开发-视频播放(1)

Qt-FFmpeg开发-视频播放【软解码】 文章目录Qt-FFmpeg开发-视频播放【软解码】1、概述2、实现效果3、FFmpeg软解码流程4、主要代码6、完整源代码更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;音视频开发 &#x1f448; 1、概述 介四里沒有挽过的船新…

平衡二叉树的判定

修仙公元2022年&#xff0c;一男子试图突破二叉树大关&#xff0c;遇一问题&#xff1a; 给定一个二叉树的根节点&#xff0c;请判断是否为平衡二叉树&#xff08;左右节点的高度绝对子小于等于1&#xff09;。 该男子使用层序遍历大法&#xff0c;信誓旦旦的前往考核地点。 …

开源人脸识别系统compareface介绍

Exadel CompreFace是一种免费的open-source人脸识别服务&#xff0c;无需事先具备机器学习技能&#xff0c;即可轻松集成到任何系统中。CompreFace为人脸识别、人脸验证、人脸检测、里程碑检测、年龄和性别识别提供了REST API&#xff0c;并且易于与docker一起部署。 https://…

基于SSM的教师管理系统

项目技术栈 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用HTML和Vue相结合开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&…

【车道线检测】FOLOLane解读

文章目录一、概览二、具体阐述1. Introduction2. 模型head介绍(1) Key points estimation--网络第一个head(2) Local geometry construction--网络第二个head3. Network architecture4. Decoder for global geometry(1) Greedy decoder&#xff08;精度高&#xff0c;但是效率低…

事务到底是隔离还是不隔离?

1. 引例 之前我们探讨过可重复读隔离级别下&#xff0c;事务T启动的时候会创建一个视图read-view。在事务T执行期间&#xff0c;即使有其他事务修改了数据&#xff0c;事务T看到的也是跟启动时一样的。 但是上次讲到行锁的时候&#xff0c;当事务T要更新当前行的时候&#xf…

Spring-Framework-ioc-4

1前言 2基本原理 3IOC容器 4Bean 5依赖 5.1依赖注入 5.2自动装配 自动装配&#xff0c;是一种自动化地进行依赖注入的机制&#xff0c;IOC容器使用此机制实现bean之间依赖关系的自动绑定&#xff0c;该机制具有如下的优点&#xff1a; 不需要显式地指定依赖的属性域、构…

基于STC89C52单片机的蔬菜大棚实时温度测量控制系统

目录 摘要 …………………………………………………………………………………I ABSTRACT II 第一章 设计任务及方案分析 1 1.1 设计任务及要求 1 1.2 设计总体方案及方案论证 1 1.3 温度测量的方案与分析 1 1.31芯片选择 1 1.32实现方法简介 2 1.33 方案设计 2 第二章 芯片简介…

Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举

Java基础&#xff08;一&#xff09;:编译和解释、数据类型、变量作用域、String常用方法、数组、面向对象、异常 Java基础&#xff08;二&#xff09;:集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举 Java异常、继承结构、处理异常、自定义异常、SpringBoot中全…

数据库学习记录2

数据库学习记录1介绍了DDL (Data Definition Language) 数据定义语言。 在数据库学习记录2中&#xff0c;我们介绍常见的数据类型&#xff1b; 主要分为三类&#xff1a;数值类型、字符串类型、日期时间类型。 数值类型 类型大小有符号范围无符号范围描述TINYINT1byte(-128&…

生成模型笔记(七):自回归模型

有鸟止南方之阜&#xff0c;三年不翅&#xff0c;不飞不鸣&#xff0c;嘿然无声&#xff0c;此为何名&#xff1f; 第七部分 深度自回归模型&#xff08;Deep Autoregressive Model&#xff0c; DARM&#xff09; 参考内容 https://jmtomczak.github.io/blog/2/2_ARM.html A…

第二十三:Fiddler抓包教程(23)-Fiddler如何优雅地在正式和测试环境之间来回切换-上篇

一.简介 1.在开发或者测试的过程中&#xff0c;由于项目环境比较多&#xff0c;往往需要来来回回地反复切换&#xff0c;那么如何优雅地切换呢&#xff1f; 二.实际工作场景 1.问题场景 1.1.已发布线上APP出现接口错误&#xff0c;如何测试线上APP访问本地请求&#xff1f;…

QFramework v1.0 使用指南 介绍篇:01. 简介

01. 简介 大家好&#xff0c;我是 QFramework 的作者 凉鞋&#xff0c;QFramework 从第一次代码提交到现在快 7 年了&#xff08;2015 年 12 月 ~ 2022 年 10 月&#xff09;了&#xff0c;而经过了 7 年时间的打磨&#xff0c;我们终于迎来了 v1.0 版本。 此教程&#xff0c…