模拟退火算法 Simulated Annealing

算法思想

自然中的退火(不理解问题不大)

模拟退火算法的思想受启发于自然界中固体由高温到低温的过程中其内部分子状态及内部能量的变化规律。

退火指物体逐渐降温冷却的物理现象。温度越低,物体的能量越低,在结晶状态是系统的能量状态到达最低。在自然中,缓慢降温(退火)可以导致结晶,而与之相对的快速降温(淬火)会导致不是最低能态的非晶体形态。

退火的过程可以表示为下图,左边为最初的非晶态状态;经过升温,系统能量增大后到达中间的状态;再缓慢降温到达晶体态,此时能量最小

自然界退火

模拟退火

我们用一个搜索函数最优解来直观表示:C为函数的全局最优解,在只采用贪心策略的情况下,如果从A点开始搜索,最终得到的解为B点,然而这只是一个局部的较好解。

搜索最优解

为了避免陷入局部的最优解,模拟退火算法在搜索过程中加入了一个随机因素,会以一定的概率接收一个比当前解较差的解,因此就有可能越过B与C之间的高峰,到达全局最优解

在这里,可以将解(横坐标的值)理解为固体的状态,函数值理解为系统的内能。算法以固体所处的温度T为控制参数,随着T的下降使固体内能(目标函数值)也逐渐下降,直至趋于全局最小。

根据Metropolis准则,在温度为T时,接受能量从E(old)到E(new)的概率为P:
P=\begin{cases} e^{\frac{E(x_{new}) - E(x_{old})}{kT}},&E(x_{new}) > E(x_{old})\\ 1,&E(x_{new}) < E(x_{old}) \end{cases}
在特定温度下,经过充分转换,材料达到热平衡。这时材料处于状态 i 的概率为
P(x=i) = \dfrac{e^{-\frac{E(i)}{KT}}}{\sum_{j\in S}\;{e^{-\frac{E(j)}{KT}}}}
其中x表示材料当前的状态,S表示材料的状态集合,k 为玻尔兹曼常数。根据上式可以得到以下结论

  • T 趋向无穷大时,任意状态的 P 都相同
  • T 下降到极低时,材料进入最低能量的概率为1

因此,如果我们运用退火思想放在优化问题上,在降温过程中问题的解进行充分地“热交换”,即进行充分地重新排列,同样可以帮助我们寻找最优解,理论上也会具有达到全局最优解的性能!

算法步骤

  1. 设置初始温度T_0,令当前温度T_{current}=T_0,并设置一个终止温度T_f和一个随机的初始解x_0,令当前解x_i=x_0
  2. 使当前温度发生变化,T_{current} = \alpha T_{current}\alpha的值取0.5~0.99之间
  3. 计算当前状态x_i(解)下的内能E(x_i)(函数值), 根据当前状态进行扰动,产生一个新的解x_j,计算\Delta E
  4. \Delta E<0,则接受该解,否则以概率P接受该解
  5. 在当前温度下,循环k次执行3和4
  6. 比较T_{current}T_f的大小,若T_{current}<T_f,则终止,否则执行2

可以看出,算法实际上是两层循环嵌套,外层循环控制温度,内层循环来进行扰动产生新解。

随着温度逐渐降低,算法最终由可能收敛到全局最优,这里说有可能的原因是因为,在温度很低时,虽然从地内能状态跳到高内能状态的可能性不大,但是也有可能发生。

应用场景

在已知的某个定义域内求函数最优值的问题通常有以下三种情况,以求最小值问题为例(求最大值可以转换为求最小值)

  • 如果是离散取值,则可以用穷举法获得问题最优解
  • 如果取值连续,且函数是凸函数,则可以用梯度下降等方法获得最优解
  • 如果连续非凸,虽说根据已有的近似求解法能够找到问题解,可解是否是最优的还有待考量,很多时候若初始值选择的不好,非常容易陷入局部最优值
三种场景

模拟退火算法就是为了应对第三种情况而提出的

参考资料:
https://www.cnblogs.com/ranjiewen/p/6084052.html
https://blog.csdn.net/weixin_40562999/article/details/80853418

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容

  • 1.概念 介绍模拟退火前,请先了解爬山算法。因为模拟退火算法是爬山算法的改进版,它在爬山算法的基础上引入了随机化。...
    木木与呆呆阅读 1,370评论 8 12
  • ->点击访问个人博客,相互交流学习<- 一、技术论述 1.随机方法 学习在构造模式分类器中起着中心的作用。一个通常...
    JackHCC阅读 2,605评论 1 1
  • 1 模拟退火算法(Simulated Annealing Algorithm)介绍    模拟退火算法是一种通用概...
    肥了个大西瓜阅读 5,336评论 0 3
  • 在算法里面有一类问题叫做最优化问题,这类问题通常的特点是问题的解空间很大,用传统的算法没有办法穷举。比如时间复杂度...
    DayDayUpppppp阅读 3,797评论 0 4
  • 昨天本来是圣诞,组了趴却聊起来了各自可怜的感情史。当然G妈被我视为感情专家,可以除外。 其实我们几个很难得,大的方...
    陶子记阅读 162评论 0 0