退火算法
退火算法
介绍
将温度T当作控制参数,目标函数值f
视为内能E
,而固体在某温度T
时的一个状态对应一个解$x_i$,然后算法试图随着控制参数T的降低,使目标函数f
(内能E
)也逐渐降低,直至趋于全局最小值(退火中低温时的最低能量状态),就像金属退火过程一样。
模拟退火数学原理
从上面我们知道,会结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,那么具体的更新解的机制是什么呢?如果新解比当前解更优,则接受新解,否则基于Metropolis
准则判断是否接受新解。接受概率为:
$$
P=\begin{cases}
1, & E_{t+1}<E_{t}\
e^{\frac{-(E_{t+1}-E_{t})}{kT}}, & E_{t+1}\geq E_{t}
\end{cases}
$$
假设开始状态在A
,随着迭代次数更新到B
局部最优解,这时发现更新到B
时,能量比A
要低,则说明接近最优解了,因此百分百转移,状态到达B
后,发现下一步能量上升了,如果是梯度下降则是不允许继续向前的,而这里会以一定的概率跳出这个坑,这个概率和当前的状态、能量等都有关系,如果B
最终跳出来了到达C
,又会继续以一定的概率跳出来,直到到达D
后,就会稳定下来。
应用部分
本来打算应用在FIRA中的,在查阅一些论文后发现该算法主要运用在路径规划方面,个人认为在这当中用处不大,并且我现在搞不定,希望未来有一天我能弄懂。。。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Getting!