模拟退火 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的更多相关文章

  1. [学习笔记] 模拟退火 (Simulated Annealing)

    真没想到这东西真的在考场上用到了...顺便水篇blog以示诈尸好了(逃 模拟退火算法 模拟退火是一种随机化算法, 用于求函数的极值qwq 比如给出一个问题, 我们要求最优解的值, 但是可能的方案数量极 ...

  2. 【智能算法】用模拟退火(SA, Simulated Annealing)算法解决旅行商问题 (TSP, Traveling Salesman Problem)

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 文章声明 此文章部分资料和代码整合自网上,来源太多已经无法查明出处,如侵犯您的权利,请联系我删除. 01 什么是旅行商问题(TS ...

  3. Monte Carlo simulated annealing

    蒙特·卡罗分子模拟计算 使用蒙特·卡罗方法进行分子模拟计算是按照以下步骤进行的: 1. 使用随机数发生器产生一个随机的分子构型. 2. 对此分子构型的其中粒子坐标做无规则的改变,产生一个新的分子构型. ...

  4. BZOJ.3680.吊打XXX(模拟退火/爬山算法)

    题目链接 一个比较好的解释? 模拟退火(Simulated Annealing,SA): (1)初始化一个温度(充分大).初始解状态S.每个T值的迭代次数. (2)对i=1,...,L,做(3)至(7 ...

  5. 使用模拟退火算法优化 Hash 函数

    背景 现有个处理股票行情消息的系统,其架构如下: 由于数据量巨大,系统中启动了 15 个线程来消费行情消息.消息分配的策略较为简单:对 symbol 的 hashCode 取模,将消息分配给其中一个线 ...

  6. 六.随机神经网络Boltzmann(玻尔兹曼机)

    Hopfield网络具有最优计算功能,然而网络只能严格按照能量函数递减方式演化,很难避免伪状态的出现,且权值容易陷入局部极小值,无法收敛于全局最优解. 如果反馈神经网络的迭代过程不是那么死板,可以在一 ...

  7. 最优化算法——常见优化算法分类及总结

    之前做特征选择,实现过基于群智能算法进行最优化的搜索,看过一些群智能优化算法的论文,在此做一下总结. 在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题"在一定成 ...

  8. Vector Bin Packing 华为讲座笔记

    Vector bin packing:first fit / best fit / grasp 成本:性价比 (先验) 设计评价函数: evaluation function:cosine simil ...

  9. 模拟退火算法(SA)求解TSP 问题(C语言实现)

    这篇文章是之前写的智能算法(遗传算法(GA).粒子群算法(PSO))的补充.其实代码我老早之前就写完了,今天恰好重新翻到了,就拿出来给大家分享一下,也当是回顾与总结了. 首先介绍一下模拟退火算法(SA ...

随机推荐

  1. webrtc之TURE、STUN、摄像头打开实战

    前言: 大家周末好,今天给 webrtc之TURE.STUN.摄像头打开实战 大家分享的是webrtc第一篇文章,在之前的音视频文章里面没有分享过关于webrtc的内容:在上个周末分享了一篇关于播放器 ...

  2. CentOS6.5 mini安装到VirtualBox虚拟机中

    下载Oracle VM VirtualBox 下载下来安装 下载镜像 http://archive.kernel.org/centos-vault/6.5/isos/i386/CentOS-6.5-i ...

  3. Linux导出未越狱Iphone10.3-QQ聊天记录

    起因 手机当中的聊天记录已经快两年没有备份了,生怕某天QQ版本升级中丢失掉这些聊天记录,所想将这两年的聊天记录保存下来 查找了好多资料,结果10.3以后,IOS改变了策略,貌似不允许通过以前方法导出了 ...

  4. python 两种排序方法 sort() sorted()

    python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法 区别为: sort()方法对list排序会修改list本身,不会返回新list.sort()只 ...

  5. 使用Hugo框架搭建博客的过程 - 主题配置

    前言 博客部署完成后,恭喜你可以发表第一篇:Hello world!但是LoveIt这么好用的主题,不配置一番可惜了. 基本功能配置 主题配置最好参考已有的配置,比如LoveIt作者写的介绍,还有主题 ...

  6. C语言代码段

    /* 功 能:将str字符串中的oldstr字符串替换为newstr字符串 * 参 数:str:操作目标 oldstr:被替换者 newstr:替换者 * 返回值:返回替换之后的字符串 */ char ...

  7. kong配置service和route实现简单API代理

    目录 通过konga连接kong实现API接口代理 1. ADD NEW SERVICE 2. ADD ROUTE 3. 验证API 代理 浏览器验证 请求kong api kong使用Admin A ...

  8. adb bat

    @REM 生成随机数@echo off@REM 设置延迟变量setlocal enabledelayedexpansionset min=9set max=21set /a mod=!max!-!mi ...

  9. matlab——插值与拟合

    @ 目录 前言 一.拟合 1.定义 2.三种判别准则 3.最小二乘法 (1)一般形式 (2)常用函数 (3)matlab实现 二.插值 1.定义 2.方法 (1)分段线性插值 (2)拉格朗日插值多项式 ...

  10. Java 批量删除Word中的空白段落

    1. 测试文档.期望达到的目标文档效果 用于测试的Word文档如下所示,包含的空白段落影响文章整体布局及美观性: 目标文档效果: 2. 辅助工具 2.1 使用类库:Free Spire.Doc for ...