模拟退火法

Simulated Annealing(SA)

之前说的遗传算法、粒子群、蚁群都是模拟生物的规律。

那今天说的模拟退火法,就不是模仿生物规律,是学习物理中固体物质的退火过程。

模拟退火法是一种通用的优化算法,其物理退火过程由以下三部分组成:


1.加温过程加温过程对算法设定初温

    目的是增强粒子的热运动,使其偏离平衡位置。当温度足够时,固体将融为液体,从而消除系统原先存在的非均匀状态。

2.等温过程等温过程对应算法的Metropolis抽样过程

    对于与周围环境交换热量而温度不同的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行,当自由能达到最小, 系统达到平衡状态。

3.冷却过程冷却过程对应控制参数的下降

    使粒子热运动减弱,系统能量下降,得到晶体结构。


补充:1.这里能量的变化就是目标函数,我们要得到的最优解就是能量最低态。

          2.其中Metrpolis准则是SA算法收敛于全局最优解的关键所在,Metripolis准则以一定概率接受恶化解,这样就使算法条例局部最优的陷阱。(步骤会解释)

模拟退火 物理退火
粒子状态
最优解 能量最低态
设定初温 溶解过程
Metropolis采样过程 等温过程
控制参数的下降 冷却
目标函数 能量


步骤:

1.初始化:取初始温度T0足够大,令T=T0,任取初始解S1。

2.对当前温度T,重复(3)-(6)

3.对当前解S1随机扰动产生一个新解S2。

4.计算S2的增量df = F(S2)-F(S1),其中F(S1)为S1的代价函数。(就是F()是目标函数)

5.若df<0,则接受S2作为新的当前解,即S1=S2;否则,计算S2的接受概率(如下)

        ,

即随机产生(0,1)区间上均匀分布的随机数rand,若P>rand,也接受S2作为新的当前解S1=S2,否则保留当前解S1。(虽然说得出的解,可能比我有的更差,但是说不定这个S2可能会引导我跳出局部解去找到全局最优,所以我们不能看到F(S2)<F(S1),就立刻抛弃S2,而是用一个概率判断我要不要用S2取代S1)。

6.若满足停止条件Stop,则输出当前解S1为最优解,结束程序,终止条件Stop通常取为在连续若干个Metropolis链中新解S2都没有被接受时终止算法或者设定结束温度;否则按衰减T后返回第(2)步。



特点:

1.与遗传算法、粒子群优化算法和蚁群算法等不同,模拟退火算法不属于群优化算法,不需要初始化种群操作。

2.收敛速度较慢

3.温度管理、退火速度等对寻优结果均有影响。


要素:

1.状态空间与状态产生函数

    搜索空间也称为状态空间,他经过编码的可行解的集合所组成,

    状态产生函数应尽可能保证产生的候选解遍布全部解空间。通常由两部分组成,即产生候选解的方式和候选解      的产生的概率分布。

    候选解一般采用按照某一概率密度函数对解空间进行随机采样来获得。

    概率分布可以是均匀分布、正态分布、指数分布等。

2.状态转移概率(接受概率,Metropolis准则)

3.冷却进度表T(t)

    冷却进度表是指从某一高温状态T0向低温状态冷却时的降温管理表。

    假设时刻t的温度用T(t)表示,则经典模拟退火算法的降温方式:

    快速模拟退火算法的降温方式为:

    这两种方式都能够使得模拟退火算法收敛于全局最小点。

    



代码:https://github.com/chocolatechu/SA

猜你喜欢

转载自blog.csdn.net/chocolate_chuqi/article/details/79877534