一个由金属退火启发的算法!node
本文主要内容:web
-
金属退火的原理 -
模拟退火算法机制 -
模拟退火的流程 -
模拟退火的应用 -
算法小结
1.金属退火的原理
金属退火是将金属加热到必定温度,保持足够时间,而后以适宜速度冷却(一般是缓慢冷却,有时是控制冷却)的一种金属热处理工艺。模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每一个温度都达到平衡态,最后在常温时达到基态,内能减为最小。算法

如上图,处在低温状态时,固体中分子具备的内能很低,在本来的位置上作小范围的振动。如果将固体加热到必定温度,分子内能将会增长,热运动加重,分子排列的无序度增长。此时再将温度缓缓下降,在每一个温度都达到平衡态(即准静态过程),分子具备的能量逐渐下降,最终回归到有序排列的状态,分子内能也跟着降到最低。微信
2.模拟退火算法机制
模拟退火算法(Simulated Annealing,SA)
最先的思想是由N. Metropolis
等人于1953
年提出。1983
年,S. Kirkpatrick
等成功地将退火思想引入到组合优化领域。它是基于Monte-Carlo
迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与通常组合优化问题之间的类似性。app
介绍模拟退火前,仍是有必要先介绍登山算法。编辑器
登山算法
登山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解做为当前解,直到达到一个局部最优解。svg

登山算法实现很简单,其主要缺点是会陷入局部最优解,而不必定能搜索到全局最优解。如上图所示:假设C
点为当前解,登山算法搜索到A
点这个局部最优解就会中止搜索,由于在A
点不管向那个方向小幅度移动都不能获得更优的解。函数
模拟退火核心思想
模拟退火算法从某一较高初温出发,伴随温度参数的不断降低,结合必定的几率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能几率性地跳出并最终趋于全局最优。以下图:布局

这里的“必定的几率”的计算参考了金属冶炼的退火过程,这也是模拟退火算法名称的由来。将温度T看成控制参数,目标函数值f
视为内能E
,而固体在某温度T
时的一个状态对应一个解
,而后算法试图随着控制参数T的下降,使目标函数f
(内能E
)也逐渐下降,直至趋于全局最小值(退火中低温时的最低能量状态),就像金属退火过程同样。flex
关于登山算法与模拟退火,有一个有趣的比喻:
-
登山算法:兔子朝着比如今高的地方跳去。它找到了不远处的最高山峰。可是这座山不必定是珠穆朗玛峰。这就是登山算法,它不能保证局部最优值就是全局最优值。 -
模拟退火:兔子喝醉了。它随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。可是,它渐渐清醒了并朝最高方向跳去。这就是模拟退火。
模拟退火数学原理
从上面咱们知道,会结合几率突跳特性在解空间中随机寻找目标函数的全局最优解,那么具体的更新解的机制是什么呢?若是新解比当前解更优,则接受新解,不然基于Metropolis
准则判断是否接受新解。接受几率为:
如上公式,假设当前时刻搜索的解为 ,对应的系统能量(目标函数)为 ,对搜索点施加随机扰动,产生新解 ,相应地,系统能量为 ,那么系统对搜索点从 到 转变的接受几率就为上公式。具体如下图为例:

假设开始状态在A
,随着迭代次数更新到B
局部最优解,这时发现更新到B
时,能量比A
要低,则说明接近最优解了,所以百分百转移,状态到达B
后,发现下一步能量上升了,若是是梯度降低则是不容许继续向前的,而这里会以必定的几率跳出这个坑,这个几率和当前的状态、能量等都有关系,若是B
最终跳出来了到达C
,又会继续以必定的几率跳出来,直到到达D
后,就会稳定下来。
3.模拟退火的流程
算法实质分两层循环,在任一温度水平下,随机扰动产生新解,并计算目标函数值的变化,决定是否被接受。因为算法初始温度比较高,这样,使E
增大的新解在初始时也可能被接受,于是能跳出局部极小值,而后经过缓慢地下降温度,算法就最终可能收敛到全局最优解,具体流程为:
-
令 ,表示开始退火的初始温度,随机产生一个初始解 ,并计算对应的目标函数值 ; -
令 ,其中 k
取值0
到1
之间,为温度降低速率; -
对当前解 施加随机扰动,在其邻域内产生一个新解 ,并计算对应的目标函数值 ,计算
-
若 ,接受新解做为当前解,不然按照几率 判断是否接受新解; -
在温度 T
下,重复L
次扰动和接受过程,即执行步骤3
和4
; -
判断温度是否达到终止温度水平,如果则终止算法,不然返回步骤 2
.
具体流程图以下:

其中有几个须要注意的点:
-
初始点的选取对算法结果有必定的影响,最好是屡次运行对结果进行综合判断。 -
在算法运行初期,温度降低快,避免接受过多的差结果。当运行时间增长,温度降低减缓,以便于更快稳定结果。 -
当迭代次数增长到必定次数时,结果可能已经达到稳定,可是距离算法结束还有一段时间。在设计程序时应该加入适当的输出条件,知足输出条件便可结束程序。
4.模拟退火的应用
模拟退火算法做为一种通用的随机搜索算法,现已普遍用于VLSI
设计、图像识别和神经网计算机的研究。模拟退火算法的应用以下:
-
模拟退火算法在 VLSI
设计中的应用
利用模拟退火算法进行VLSI
(Very Large Scale Integration
,超大规模集成电路)的最优设计,是目前模拟退火算法最成功的应用实例之一。用模拟退火算法几乎能够很好地完成全部优化的VLSI
设计工做。如全局布线、布板、布局和逻辑最小化等等。 -
模拟退火算法在图像处理中的应用
模拟退火算法可用来进行图像恢复等工做,即把一幅被污染的图像从新恢复成清晰的原图,滤掉其中被畸变的部分。所以它在图像处理方面的应用前景是广阔的。 -
模拟退火算法在神经网计算机中的应用
模拟退火算法具备跳出局部最优陷阱的能力。在Boltzmann
机中,即便系统落入了局部最优的陷阱,通过一段时间后,它还能再跳出来,系统最终将往全局最优值的方向收敛。 -
模拟退火算法的其余应用
除了上述应用外,模拟退火算法还用于其它各类组合优化问题,如TSP
和Knapsack
问题等。大量的模拟实验代表,模拟退火算法在求解这些问题时能产生使人满意的近似最优解,并且所用的时间也不很长。
5.小结
总之,模拟退火算法是经过赋予搜索过程一种时变且最终趋于零的几率突跳性,从而可有效避免陷入局部极小并最终趋于全局最优的串行结构的优化算法。算法从某一较高初温出发,伴随温度参数的不断降低,结合必定的几率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能几率性地跳出并最终趋于全局最优。
至此,本文从金属退火的原理,登山算法,模拟退火算法思想以及原理,到模拟退火的流程和应用方面对模拟退火算法进行了简单的阐述,但愿对你们有所帮助。

♥点个赞再走呗♥
本文分享自微信公众号 - 智能算法(AI_Algorithm)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。