模拟退火 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 ...
随机推荐
- MySql:MySql忘记密码怎么修改?
1. 关闭正在运行的MySQL服务2. 打开DOS窗口,转到mysql\bin目录3. 输入mysqld --skip-grant-tables 回车 --skip-grant-table ...
- php+redis实现全页缓存系统
php redis 实现全页缓存系统之前的一个项目说的一个功能,需要在后台预先存入某个页面信息放到数据库,比如app的注册协议,用户协议,这种.然后在写成一个php页面,app在调用接口的时候访问这个 ...
- phpCOW机制(写时复制)
写时复制(Copy-on-Write,也缩写为COW),顾名思义,就是在写入时才真正复制一份内存进行修改. COW最早应用在*nix系统中对线程与内存使用的优化,后面广泛的被使用在各种编程语言中,如C ...
- edraw max for mac 安装
1.下载网址:https://xclient.info/s/edraw-max.html#versions 2.安装断网安装,直接打开 .dmg文件安装 3.按照阅读文件中的第二步,将opt.cell ...
- 深入浅出图神经网络 第6章 GCN的性质 读书笔记
第6章 GCN的性质 第5章最后讲到GCN结束的有些匆忙,作为GNN最经典的模型,其有很多性质需要我们去理解. 6.1 GCN与CNN的区别与联系 CNN卷积卷的是矩阵某个区域内的值,图卷积在空域视角 ...
- Selenium启动Chrome浏览器提示“请停用以开发者模式运行的扩展程序”的解决办法
安装了python selenium,运行下面代码: 1 from selenium import webdriver 2 3 browser = webdriver.Chrome() 4 brows ...
- Linux 之 usermod
usermod [选项] 登录名 usermod用于修改用户基本信息 -d 修改用户的主目录,与-m选项一起使用 -d和-m要联合使用,否则修改的用户有问题 -g,--gid 修改用户组,该用户组是必 ...
- 高校表白App-团队冲刺第九天
今天要做什么 在Fragment首页加上轮转播报,点击图片进入相应连接 做了什么 功能实现,通过连接第三方库来进行实现,比较简单.(url就可以) 遇到的问题 在调用以前的工具类时,有点小问题,发现以 ...
- Java基础00-分支语句6
1. 流程控制 1.1 流程控制语句概述 1.2 流程控制语句分类 1.3 顺序结构 2. if语句 2.1 if语句格式1 适合一种情况的判断 执行流程图: 2.2 if语句格式2 适合两种情况的判 ...
- element UI rules prop对应关系