应是天仙狂醉,乱把白云揉碎|

逆世混沌

园龄:3年2个月粉丝:6关注:5

学点数模-1

一、模拟退火算法

说起退火算法说是模拟金属淬火之后退火的情况的,不过这里也无所谓。

我们直接来解释一下这个退火算法是怎么进行的。

在说之前,要看看爬山算法。

爬山算法:

我们要找一个最优解,在较为连续的环境下就是找一个山顶,在数据处理中爬山算法在确定一个点后,左右判断是否是最高点,说白了就是找到了极大值而非最大值,当找到这个极大值后就会停下,但是实际上是有可能会有最大值存在,导致不一定是最优解。

模拟退火算法:

是能够解决爬山算法的问题的。我们可以先了解一下金属退火的情况

金属退火

我个人觉得应该是跟锻刀的淬火是一个理念,如果不一致等我之后再去了解。

金属退火是指:金属本身处于较为无序状,分布并不规律,是具有一部分内能的,会在某些范围将固体加热至充分高使得其分子变得极为无序,然后再徐徐冷却(意思是缓慢的冷却)使得冷却下来的金属内能降低到最小,分子排列也更加整齐。

对金属退火的模拟

模拟金属的退火概率产生退火算法。

我们可以认为我们的数据筛选是在将金属升温至充分高后进行退火的产物:一个分子在所有数据中不断的跳脱,这个分子是足够活跃的,不断的跳跃,接下来温度徐徐下降,该分子会逐渐慢下来(可以再配合波尔的原子能级理论,这个分子的趋于稳定后的波动不是线性的,而是分级的)该分子会慢下来并不断的各个“山顶”中跳跃,最后跳至最高的山顶处停下,那么这个山顶就是最优解。

有这样一个比喻方便理解:

 

  • 爬山算法:兔子朝着比现在高的地方跳去。它找到了不远处的最高山峰。但是这座山不一定是珠穆朗玛峰。这就是爬山算法,它不能保证局部最优值就是全局最优值。
  • 模拟退火:兔子喝醉了。它随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,它渐渐清醒了并朝最高方向跳去。这就是模拟退火。

 

 

模拟退火的算法层面(数学原理)

Metropolis准则

首先有以下准则:

 

 

 该准则我们解释一下:这个P是指接受新解的概率,当Et+1>=Et ==> -(Et+1 - Et )<=0.

下面是e^x图像

 

 

 当x小于等于0时,其得值在0~1之间,即为概率。

进行退火的流程

算法实质分两层循环,在任一温度水平下,随机扰动产生新解,并计算目标函数值的变化,决定是否被接受。由于算法初始温度比较高,这样,使E增大的新解在初始时也可能被接受,因而能跳出局部极小值,然后通过缓慢地降低温度,算法就最终可能收敛到全局最优解

首先我们先产生一个t~E的坐标轴。随着t 的变化,E也在变化,先有这麽一个概念

我们先约定一个退火最优解(就是初始解),然后针对该初始解会有对应的E即初始E,此时我们有一个初始温度T,这个T是徐徐下降的。

然后我们进行一个扰动,在前期,我们为了跳脱出局部最优解,可以进行“虽然E没有前一个E大,但是可以接受”,在随着T的下降,我们的跳动不再活跃,而是不断聚焦于几个极大值点,然后在终止温度下得到最优解

以上即为退火算法的简单流程。

(221条消息) 超简单易懂的模拟退火算法原理及其matlab代码实现_从零开始的智能计算生活的博客-CSDN博客_模拟退火算法matlab

模拟退火算法详解 - 知乎 (zhihu.com)

具体参考了以上两位,并且还查找了一些资料以便理解,还有具体的代码层面就不亮了。

 

posted @   逆世混沌  阅读(33)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 狂迪 卢广仲
狂迪 - 卢广仲
00:00 / 00:00
An audio error has occurred.

作词 : 卢广仲/討海人/黄少雍

作曲 : 卢广仲

在我眼前消失不见

今天的什么都不对

楼下的店听见熟悉的音乐

谁离开我谁爱着我

剩下一半的小火锅

别乱牵拖直到你出现

满天星光月亮出来了

神魂颠倒这是真的吗

管不住我自己的步伐

戒不掉你致命的魔法

谁教我蜿蜒的弹跳

谁教我崎岖的舞蹈

我爱你你知不知道

OH Dónde estás Bongria

想要见面有点抱歉

下午才跟你晚上约

请放轻松看着公园的落叶

摇摇晃晃我的形状

一边海洋一边天堂

你拉着我这一步叫做永远

满天星光月亮出来了

神魂颠倒这是真的吗

管不住我自己的步伐

戒不掉你致命的魔法

谁教我蜿蜒的弹跳

谁教我崎岖的舞蹈

我爱你你知不知道

OH Dónde estás Bongria

我丢掉太多的不必要

朝着有你的方向跑

跑到你眼前逗你笑

听到电影里的配乐响起

全场只为了等你说一句

说欸你要不要跟我一起

去教堂

Yes I do希望你也一样

先说好一起永保安康

每一天蜿蜒的弹跳

每一天崎岖的舞蹈

我爱你你知不知道 OH

如果爱我让我看见你

的脚