一、模拟退火算法
说起退火算法说是模拟金属淬火之后退火的情况的,不过这里也无所谓。
我们直接来解释一下这个退火算法是怎么进行的。
在说之前,要看看爬山算法。
爬山算法:
我们要找一个最优解,在较为连续的环境下就是找一个山顶,在数据处理中爬山算法在确定一个点后,左右判断是否是最高点,说白了就是找到了极大值而非最大值,当找到这个极大值后就会停下,但是实际上是有可能会有最大值存在,导致不一定是最优解。
模拟退火算法:
是能够解决爬山算法的问题的。我们可以先了解一下金属退火的情况
金属退火
我个人觉得应该是跟锻刀的淬火是一个理念,如果不一致等我之后再去了解。
金属退火是指:金属本身处于较为无序状,分布并不规律,是具有一部分内能的,会在某些范围将固体加热至充分高使得其分子变得极为无序,然后再徐徐冷却(意思是缓慢的冷却)使得冷却下来的金属内能降低到最小,分子排列也更加整齐。
对金属退火的模拟
模拟金属的退火概率产生退火算法。
我们可以认为我们的数据筛选是在将金属升温至充分高后进行退火的产物:一个分子在所有数据中不断的跳脱,这个分子是足够活跃的,不断的跳跃,接下来温度徐徐下降,该分子会逐渐慢下来(可以再配合波尔的原子能级理论,这个分子的趋于稳定后的波动不是线性的,而是分级的)该分子会慢下来并不断的各个“山顶”中跳跃,最后跳至最高的山顶处停下,那么这个山顶就是最优解。
有这样一个比喻方便理解:
- 爬山算法:兔子朝着比现在高的地方跳去。它找到了不远处的最高山峰。但是这座山不一定是珠穆朗玛峰。这就是爬山算法,它不能保证局部最优值就是全局最优值。
- 模拟退火:兔子喝醉了。它随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,它渐渐清醒了并朝最高方向跳去。这就是模拟退火。
模拟退火的算法层面(数学原理)
Metropolis
准则
首先有以下准则:
该准则我们解释一下:这个P是指接受新解的概率,当Et+1>=Et ==> -(Et+1 - Et )<=0.
下面是e^x图像
当x小于等于0时,其得值在0~1之间,即为概率。
进行退火的流程
算法实质分两层循环,在任一温度水平下,随机扰动产生新解,并计算目标函数值的变化,决定是否被接受。由于算法初始温度比较高,这样,使E
增大的新解在初始时也可能被接受,因而能跳出局部极小值,然后通过缓慢地降低温度,算法就最终可能收敛到全局最优解
首先我们先产生一个t~E的坐标轴。随着t 的变化,E也在变化,先有这麽一个概念
我们先约定一个退火最优解(就是初始解),然后针对该初始解会有对应的E0 即初始E,此时我们有一个初始温度T,这个T是徐徐下降的。
然后我们进行一个扰动,在前期,我们为了跳脱出局部最优解,可以进行“虽然E没有前一个E大,但是可以接受”,在随着T的下降,我们的跳动不再活跃,而是不断聚焦于几个极大值点,然后在终止温度下得到最优解
以上即为退火算法的简单流程。
(221条消息) 超简单易懂的模拟退火算法原理及其matlab代码实现_从零开始的智能计算生活的博客-CSDN博客_模拟退火算法matlab
具体参考了以上两位,并且还查找了一些资料以便理解,还有具体的代码层面就不亮了。
标签:退火,模拟退火,金属,算法,数模,爬山,最优 From: https://www.cnblogs.com/nish1hundun/p/17001878.html