本文将对模拟退火算法(Simulated Annealing)进行介绍,深入理解这个算法。

模拟退火算法和上一篇文章随机模拟算法中的Metropolis算法有着紧密的联系,在这里将详细探讨这种关系。

我们先从这个算法要解决的问题出发,逐步引出相应的算法。(pku, sewm,shinning)

一. 问题

人们经常遇到这样的问题:在某个定义域S内,求某个函数f(x)的最小值,形式化为Min f(x),x属于S。这是一个优化问题,根据f(x)的形式不同,有很多的优化算法来解决这类问题,简单的有穷举法(适用于定义域小的情况),图解法,数学分析法(求导数法)等精确算法,如果很难精确求得,还有很多的近似求解法,如贪心法(如爬山法,最速下降法,梯度下降法),随机模拟方法(MCMC等)。本文将介绍的模拟退火方法属于随机模拟方法,但是是可以求得精确解的(概率为1求得全局优化解),神奇吧!

二. 算法的基本思想

那怎么求解f(x)的最小值呢?它的思想是利用Gibbs分布:S中的一个点x的概率满足分布:p(x, T) = EXP(-f(x)/T)/Z,Z是归一化因子。现在假设T-> 0,可以看到f(x)越小,p(x,T)越大,意味着f(x)以非常大的概率取得最小值,这就是基本思想。现在是怎么操作的问题,这个分布是确定的,T已知,f(x)的表达式已知(对一个值,就是可以计算出来量),p(x,T)这个分布的形式就已知了,这时候我们利用Metropolis模拟算法去对这个分布抽样,在样本中,出现最多的非常有可能就是我们要求的最小值。似乎问题都解决了,然而如果直接把T设为很小,这个算法的计算时间太长了,因为S可能太大!不实用!

因此,我们采用了层层推进的办法,我们先把T设为一个较大的值Ti,然后在这个Ti的情况下采样,这个时候由于约束条件的限制,p(x,Ti)的定义域只是S的子集,因此速度较快,在采样分布稳定之后,再通过一个T的控制函数g(Ti, Tj)(是一个单调不增函数,T>=0)得到一个更小的Tj,然后在Tj的情况下,再对分布p(x, Tj)采样,直到达到稳定分布,我们可以知道这个时候f(x)比起Ti时候的f(x)变得更加小了,直到达到较小T的时候(自己设定)我们可以认为达到了优化解的情况。

三.模拟退火算法(simulated annealing)

在这一节,我们把算法总结在这里:

设定起始值T0,T的控制函数g(Ti, Tj)

while(T还没有达到我们设定的最小值)

{

对这时的T情况下的Gibbs分布p(x, T)用Metropolis模拟算法进行采样x(t),直到达到稳定状态为止, 然后进入下一次循环(这句话的伪代码描述见下面)

}

循环中对p(x,T)进行Metropolis采样的算法我们放在这里,它也是一个循环

已知T,当前的样本x(t)(来自上一次循环的最后一个样本),建议分布h(x(t), x(t+1))

while(未达到稳定状态)

{

先抽取一个建议样本y ~ h(x(t), x(t+1))

if( f(y) < f(x(t) )  { 令x(t+1) = y; }

else

{

令a = min{1, p(x(t+1), T)/p(x(t), T)};

然后抽取u ~ Uniform(0, 1);

if( u < a) {x(t+1) = y};

else { x(t+1) = x(t) };

}

}

上面这个循环完全就是Metropolis算法,详细的解释可以看我的上一篇文章: 模拟计算。

(pku, sewm,shinning)

至于,这个算法的名字:模拟退火,来自于我们这个过程和物理学中打造钢铁时候的加热-等温-降温过程,这里的T为温度,f(x)可以令为能量,上述的Metropolis过程就相当于等温过程,p(x, T)就是在T时候系统所处状态的概率分布,可以明显的看到,这个概率与系统的能量和温度密切相关,大部分的资料都是先将这个物理过程,然后再讲算法本身,如果人们不熟悉这个物理过程,简单的介绍反而会使得大家对这个算法搞不清楚。因此,本文为了叙述清楚,没有描述这个过程,反而更加的清楚!

(pku, sewm,shinning)

深入理解模拟退火算法(Simulated Annealing)相关推荐

  1. 数学建模——模拟退火算法(Simulated Annealing,SA)

    模拟退火算法 一.模拟退火算法概述 二.算法步骤 三.算法特点 四.模拟退火算法理解(图解) 五.Metropolis准则 六.模拟退火算法的应用 七.模拟退火算法Matlab代码 工具箱求解非线性函 ...

  2. 一文搞懂什么是模拟退火算法SImulated Annealing【附应用举例】

    本文参考了很多张军老师<计算智能>的第十章知识. 本文来源:https://blog.csdn.net/qq_44186838/article/details/109181453 模拟退火 ...

  3. 【opencv450-samples】旅行商问题(模拟退火算法Simulated Annealing,SA)

    运行结果 视频演示 源码: #include <opencv2/core.hpp> #include <opencv2/imgproc.hpp> #include <op ...

  4. 模拟退火算法(Simulated Annealing)

    模拟退火算法 说说什么是算法?有人理解是输入数据经过一些步骤的处理,最后输出.在我理解来看就是一种优化问题或者说是数值分析,无论机器学习中的算法还是深度学习的算法,寻找最优模型都是解最小损失的函数.最 ...

  5. 模拟退火(simulated annealing)算法详解

    模拟退火(simulated annealing)算法详解 模拟退火算法来源于固体退火原理,得益于材料统计力学的研究成果,并且该算法也是一种基于概率的算法.该算法主要用于求解最优解问题,如巡航问题.函 ...

  6. Python使用模拟退火(Simulated Annealing)算法构建优化器获取机器学习模型最优超参数组合(hyperparameter)实战+代码

    Python使用模拟退火(Simulated Annealing)算法构建优化器获取机器学习模型最优超参数组合(hyperparameter)实战+代码 目录

  7. 爬山算法 ( Hill Climbing )/模拟退火(SA,Simulated Annealing)

    一. 爬山算法 ( Hill Climbing ) 爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解.爬山算法实现很简单,其主要缺点是 ...

  8. 【机器学习基础】(一) 爬山算法 ( Hill Climbing )与模拟退火(SA,Simulated Annealing)

    一.爬山算法 ( Hill Climbing ) 爬山算法属于人工智能算法的一种. 这种算法基于贪心算法的思想,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解.爬山算 ...

  9. R语言基于模拟退火(Simulated Annealing)进行特征筛选(feature selection)

    R语言基于模拟退火(Simulated Annealing)进行特征筛选(feature selection) 特征选择的目的 1.简化模型,使模型更易于理解:去除不相关的特征会降低学习任务的难度.并 ...

最新文章

  1. Theano学习笔记(三)——图结构
  2. 龙岗网络推广为SEO优化人员介绍如何合理处理垃圾外链?
  3. 牛逼的python代码_牛逼了!Python代码补全利器,提高效率告别996!
  4. ios原子操作和各种锁
  5. 【机器学习算法】XGBoost
  6. task文件服务器无法输入,Win10系统无法启动task scheduler服务的解决方法
  7. Java操作ftp,上传,下载,删除操作
  8. CentrOS7静默安装oracle11g
  9. python有什么用-python都可以做什么用
  10. CSDN Blog升级通告
  11. [bzoj3670] [NOI2014] [lg2375] 动物园
  12. C#判断平面中两条直线的夹角
  13. 数字日期格式转换yyyymmdd_如何把日期改为yyyymmdd
  14. 计算机修改wifimac,怎么修改mac地址?(手机和电脑mac地址修改方法)
  15. React JsBarcode使用
  16. vue移动端日历显示查看每日详情列表
  17. 绿色风格资格证书学校培训机构网站源码 织梦dedecms模板 带手机版
  18. javacpp-opencv图像处理系列:国内车辆牌照检测识别系统(万份测试车牌识别准确率99.7%以上,单次平均耗时39ms)...
  19. 规约——前置条件和后置条件
  20. Sql练习--查询有趣的电影

热门文章

  1. win10控制面板快捷键_你没玩过的全新版本Win10,这些操作你知多少?
  2. 统计在线人数和登录人数
  3. 网络表示学习相关资料
  4. img服务器上的图片不显示不出来,img标签使用绝对路径无法显示图片
  5. 前端的Vue相关的项目经验
  6. keil编译后显示的Program size含义
  7. CSS选择器优先级(特异性)
  8. radis安装和使用
  9. 频谱仪和信号发生器的使用
  10. 北大邮箱收件服务器,北京大学网络服务