模拟退火算法

原创 2018年04月15日 03:05:38

                                       模拟退火算法

模拟退火算法,相信很多人一开始看到这个名字,如果不加算法两个字,都不会联想到这是一种求解最优值的一种算法。那到底什么是模拟退火算法呢,首先,我们需要知道他为什么叫模拟退火,退火两个字,来源于冶金学,是指“将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。"--百度百科。 那模拟两个字是什么意思呢,意思就是我应用退火的思想,去求解目标函数的最小值,通常知道迭代次数够多,参数设置合理,都可以找到全局最优点。

那为什么要用模拟退火算法呢? 我们知道,对于一组离散值,我们可以用穷举法,找到最小值, 对于一个凸函数,我们可以通过梯度下降法或者牛顿法迭代找到最小值,但是对于一个有着几个局部最下值的函数,无论是贪心算法或者梯度下降,都容易陷入局部最小值。而模拟退火算法,在找到最小值的时候,还会以一定概率,去接受更差值,这样就有机会跳出局部最优,从而找到全局最优,当然,这个概率随着时间会慢慢减小。其实这个思想就是Metropolis接受准则(1953)

                                                   

什么意思呢,df 就是y1-y0, 也就是新的函数值比当前的函数值小,那我们就以概率1(也就是一定)接受新的函数值,如果df大于0,我们就以第二个式子的值这个概率接受更差值。可以发现,由于指数函数特性,当我们的df很大或者T0很小时,接受更差值的概率趋近于0。

我们来看看算法流程,考虑一个函数最小化 f(x)的问题。

1. 首先给定一个初始温度 T0, 以及一个初始解 X0,计算 得到 y0 

2. 以一定系数(0.99,0.98)减小T0

3. 扰动X0,也就是随机让X0产生一定的变化,变成X1,计算y1 , 比较y1 和y0 的大小

4. y1小于y0, 即说明新的解比上次的解要更优,我们接受他,否则,则以一定的概率接受y1这个更差的解。这个概率大小为上式中那个指数函数算出来的值。

5. 在每一个T下重复2,3若干次.

6. 判断T是否达到预设下界或者循环次数是否完成,若是,退出。否,回到步骤2.

我们可以发现,一开始T0是比较大的,则exp(-df/T) 的值也会比较大,也就是说如果一开始落入了局部最优,我们有很大的概率往出跳,随机T的减小,接受更差解的概率变小,最终落到全局最优。



            

  

    

使用Rundll32.exe和Rundll.exe(转程式设计技术)

使用Rundll32.exe和Rundll.exe(转程式设计技术) 本帖版权归原作者,其它网站转载须注明出处,传统媒体转载须事先与原作者和e龙西祠胡同[http://www.xici.net]联系。...
  • yypp
  • yypp
  • 2001-05-27 18:36:00
  • 767

模拟退火算法即应用实例

  • 2010年03月24日 09:55
  • 336KB
  • 下载

模拟退火算法总结(含例子)

一.模拟退火算法概述   模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最...
  • lcj_cjfykx
  • lcj_cjfykx
  • 2014-03-12 02:17:46
  • 12686

优化算法——模拟退火算法

模拟退火算法原理 模拟退火算法 模拟退火算法过程 模拟退火算法流程 模拟退火算法的Java实现 Java代码 最后的结果模拟退火算法原理爬山法是一种贪婪的方法,对于一个优化问题,其大致图像(图像地址)...
  • google19890102
  • google19890102
  • 2015-04-30 15:55:43
  • 20967

模拟退火算法系列之(二):一个实例

模拟退火算(Simulated Annealing)法是一种基于蒙特卡洛思想设计的近似求解最优化问题的方法。本文通过一个实例来编程演示模拟退火的执行。特别地,我们这里所采用的实例是著名的“旅行商问题”...
  • baimafujinji
  • baimafujinji
  • 2016-09-18 13:37:16
  • 5600

人工智能:模拟退火初始温度值的计算

1.模拟退火法简介模拟退火法是一种状态空间的局部搜索算法,它属于比较通用的寻找最优解的算法。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优...
  • qq_33268231
  • qq_33268231
  • 2017-10-12 01:47:32
  • 469

模拟退火算法(c++实现)

模拟退火算法算法简介  模拟退火算法得益于材料的统计力学的研究成果。统计力学表明材料中粒子的不同结构对应于粒子的不同能量水平。在高温条件下,粒子的能量较高,可以自由运动和重新排列。在低温条件下,粒子能...
  • qq547276542
  • qq547276542
  • 2017-09-02 13:46:47
  • 2892

MATLAB模拟退火算法模板

为了参加国赛,这几天学了模拟退火算法,整理下当做模板方便国赛的时候用。 模拟退火用于处理最优化问题,可以求出当目标函数取得最小值时的决策变量的值。 在编写程序时需要根据具体问题设计算法,算法描述为...
  • pangel18
  • pangel18
  • 2016-08-29 08:31:40
  • 10459

模拟退火算法的matlab程序,简单易懂

  • 2013年12月04日 22:10
  • 490KB
  • 下载

matlab 程序实现 模拟退火算法程序 函数求极值(引用后修改)

代码:http://blog.sina.com.cn/s/blog_6377a31001019foe.html %matlab 程序实现 模拟退火算法程序 函数求极值(引用后修改,感谢 ARMYLAU...
  • onlyaisha
  • onlyaisha
  • 2015-04-19 21:53:50
  • 1768
收藏助手
不良信息举报
您举报文章:模拟退火算法
举报原因:
原因补充:

(最多只允许输入30个字)