模拟退火 Simulated annealing
模拟退火 Simulated annealing
看看有空把图片完善一下好了
模拟退火算法的一些背景
既然要说模拟退火算法,就应该说一下模拟退火算法的背景,模拟退火算法是局部搜索算法的一种扩展,该算法的思想最早由Metropolis在1953年提出,然后又由其他人在1983年成功将模拟退火算法用作求解组合优化问题,将其作为一种可以有效求解复杂组合优化问题的一种有效方法
模拟退火算法顾名思义,就是根据复杂组合优化问题和现实中的固体退火的过程的相似点建立联系得到的,收到固体退火思想的影响,Kirkpatrick等人才意识到组合优化问题与固体退火过程的类似性,将组合优化问题类比成固体退火的过程,从而提出了模拟退火算法
模拟退火算法是一种基于概率的算法(是基于Monte-Carlo迭代求解策略的一种随机寻优算法),将固体的温度加到很高的温度,然后再让其慢慢冷却,在固体温度增加的时候,固体内部粒子随温度的上升会变成无序状态,固体的内能增大,在慢慢冷却的时候,固体内部粒子慢慢趋于有序的状态,内部粒子在每个温度点都达到平衡态,最后在常温时达到基态,固体的内能此时到达最小
组合优化过程和固体退火过程进行对比
在固体退火过程中,物理系统中的一个状态,就等同于组合优化问题中的组合优化问题的解
在固体退火过程中,状态的能量,就等同于组合优化问题中的解的指标函数
在固体退火过程中,能量最低状态,就等同于组合优化问题中的最优解
在固体退火过程中,温度,就等同于组合优化问题中的控制参数
模拟退火算法的描述
模拟退火算法的描述如下
第一步,随机选择一个解i,此时k=0,t0=Tmax(初始温度),计算指标函数f(i)
第二步,如果满足结束条件,则输出结果并结束
第三步,如果在该温度内达到了平衡条件,则tk+1=Drop(tk),k=k+1
第四步,从i的邻域N(i)中随机选择一个解j,计算指标函数f(j),如果f(j)<f(i),则i=j,f(i)=f(j),然后回到第三步
第五步,计算pt(i=>j)=exp(-f(j)-f(i)/t),如果pt(i=>j)>Random(0,1),则i=j,f(i)=f(j),然后回到第三步
最后结束
三个重要的条件
在上面模拟算法中没有提及的有三个重要的条件,这三个条件很关键
第一个是初始的温度必须足够高
第二个是在每个温度下,状态的交换必须足够充分
第三,温度T的下降必须足够缓慢
参数的确定
在模拟退火的过程中,给定温度下状态的转移可以视为是一个马尔科夫链,而且我们在使用模拟算法的时候要对一些参数或准则进行选取
在使用的时候的需要的参数和准则有:
①初始温度
②温度的衰减函数,即温度的下降方法
③算法的终止准则,用终止温度或者终止条件给出
④每个温度下的马尔科夫链的长度
寻找合适的初始温度
首先,给定一个希望的初始接受概率P0,给定一个较低的初始温度t0,然后,随机产生一个状态序列,并计算该序列的接受率(接受的状态数/产生的状态总数),如果接受率大于给定的初始接受概率P0,则直接结束,否则,提高温度,更新t0,然后继续上一步,直到结束,其中更新t0可以采用每次加倍的方法,也可以采用每次加固定值的方法
温度下降的方法
常用的温度下降方法有三种:
①等比例下降
②等值下降
③基于距离参数的下降方法
其中①和②都是独立于具体问题的方法,③是与具体问题有关的温度下降方法
每一种温度下的停止准则
一般有以下几种常用的停止准则:
①固定长度方法
②基于接受率的停止准则
算法的终止原则
一般有以下几种确定算法的终止的方法:
①零度法
②循环总控制法
③无变化控制法
④接受概率控制法
⑤领域平均概率控制法
⑥相对误差估计法
具体有空完善一下内容

模拟退火 Simulated annealing的更多相关文章
- [学习笔记] 模拟退火 (Simulated Annealing)
真没想到这东西真的在考场上用到了...顺便水篇blog以示诈尸好了(逃 模拟退火算法 模拟退火是一种随机化算法, 用于求函数的极值qwq 比如给出一个问题, 我们要求最优解的值, 但是可能的方案数量极 ...
- 【智能算法】用模拟退火(SA, Simulated Annealing)算法解决旅行商问题 (TSP, Traveling Salesman Problem)
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 文章声明 此文章部分资料和代码整合自网上,来源太多已经无法查明出处,如侵犯您的权利,请联系我删除. 01 什么是旅行商问题(TS ...
- Monte Carlo simulated annealing
蒙特·卡罗分子模拟计算 使用蒙特·卡罗方法进行分子模拟计算是按照以下步骤进行的: 1. 使用随机数发生器产生一个随机的分子构型. 2. 对此分子构型的其中粒子坐标做无规则的改变,产生一个新的分子构型. ...
- BZOJ.3680.吊打XXX(模拟退火/爬山算法)
题目链接 一个比较好的解释? 模拟退火(Simulated Annealing,SA): (1)初始化一个温度(充分大).初始解状态S.每个T值的迭代次数. (2)对i=1,...,L,做(3)至(7 ...
- 使用模拟退火算法优化 Hash 函数
背景 现有个处理股票行情消息的系统,其架构如下: 由于数据量巨大,系统中启动了 15 个线程来消费行情消息.消息分配的策略较为简单:对 symbol 的 hashCode 取模,将消息分配给其中一个线 ...
- 六.随机神经网络Boltzmann(玻尔兹曼机)
Hopfield网络具有最优计算功能,然而网络只能严格按照能量函数递减方式演化,很难避免伪状态的出现,且权值容易陷入局部极小值,无法收敛于全局最优解. 如果反馈神经网络的迭代过程不是那么死板,可以在一 ...
- 最优化算法——常见优化算法分类及总结
之前做特征选择,实现过基于群智能算法进行最优化的搜索,看过一些群智能优化算法的论文,在此做一下总结. 在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题"在一定成 ...
- Vector Bin Packing 华为讲座笔记
Vector bin packing:first fit / best fit / grasp 成本:性价比 (先验) 设计评价函数: evaluation function:cosine simil ...
- 模拟退火算法(SA)求解TSP 问题(C语言实现)
这篇文章是之前写的智能算法(遗传算法(GA).粒子群算法(PSO))的补充.其实代码我老早之前就写完了,今天恰好重新翻到了,就拿出来给大家分享一下,也当是回顾与总结了. 首先介绍一下模拟退火算法(SA ...
随机推荐
- 案例分享:Qt西门子机床人机界面以及数据看板定制(西门子通讯,mysql数据库,生产信息,参数信息,信息化看板,权限控制,播放器,二维图表,参数调试界面)
若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/118685521 长期持续带来更多项目与技术分享 ...
- SpringBoot:springBoot注解大全
springboot源码下载 https://github.com/spring-projects/spring-boot/releases 一.注解(annotations)列表 @SpringBo ...
- Springboot:单元测试日志打印@Slf4j 注解的使用方法
当自己写日志的时候,肯定需要: private final Logger logger = LoggerFactory.getLogger(LoggerTest.class); 每次写新的类,就需要重 ...
- 12 shell case in语句
Shell也支持两种分支结构(选择结构),分别是 if else 语句和 case in 语句.当分支较多,并且判断条件比较简单时,使用 case in 语句就比较方便了. if else 语句与ca ...
- Linux中grep和egrep命令详解
rep / egrep 语法: grep [-cinvABC] 'word' filename -c :打印符合要求的行数-i :忽略大小写-n :在输出符合要求的行的同时连同行号一起输出-v ...
- 【重学Java】IO流
IO流的UML类图 File类 File类概述和构造方法[应用] File类介绍 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在 ...
- WPF使用Microsoft.VisualBasic创建单例模式引起的权限降低问题
在进行WPF开发时,总是在找更加优雅去写单例模式的代码. 很多人都喜欢用Mutex,一个App.cs下很多的Mutex,我也喜欢用. 看完<WPF编程宝典>的第七章Applicaton类后 ...
- ESP-IDF硬件设计相关知识
1.更新ESP-IDF:直接删除您本地的 esp-idf 文件夹,然后克隆新版本:更新完成后,请执行 install.sh (Windows 系统中为 install.bat)脚本,避免新版 ESP- ...
- ESP32引脚参考(转)
ESP32芯片配有48个具有多种功能的引脚.并非所有的引脚都暴露在所有的ESP32开发板中,有些引脚不能使用. 关于如何使用ESP32 GPIO有很多问题.你应该用什么pin?在项目中应该避免使用哪 ...
- 交通规则:HOV车道
多乘员车道的限行时间一般为工作日上下班高峰,车上只有一个人时不能走该车道