模拟退火初步讲解

以前在介绍某个算法的时候我都会想当然的取个“xxxx算法详解”,然而这个只是用到了初步讲解。原因是我只在做计算几何上用到了这个算法,并且实质上不完全是这个算法的具体表现。所以对这个算法的理解可能还不太透彻。所以才用的初步讲解。。
一下内容参考自:https://blog.csdn.net/qq_34374664/article/details/78332983

算法介绍

爬山算法也是一个用来求解最优化问题的算法,每次都向着当前上升最快的方向往上爬,但是初始化不同可能会得到不同的局部最优值,模拟退火算法就可能跳出这种局部最优解的限制。模拟退火算法是模拟热力学系统中的退火过程。在退火过程中是将目标函数作为能量函数。大致过程如下

初始高温 => 温度缓慢下降=> 终止在低温 (这时能量函数达到最小,目标函数最小)

P i ( T k ) = C k e x p ( E i T k )

模拟退火算法也是贪心算法,但是在其过程中引入了随机因素,以一定的概率接受一个比当前解要差的解,并且这个概率随着时间的推移而逐渐降低。

算法描述

F ( Y ( i + 1 ) ) > F ( Y ( i ) ) ,即移动后得到更优的解,那么总是接受该移动。
F ( Y ( i + 1 ) ) < F ( Y ( i ) ) ,即移动后得到更差的解,则以一定的概率接受该移动,并且该概率随着迭代次数增加而降低。这个概率表示为

P ( Δ E ) = e x p ( Δ E k T )

由于是退火过程,所以 Δ E < 0 ,这个公式说明了温度越高降温的概率就越大,温度越低,出现降温的概率就越小,由于 Δ E 总是小于0,所以 P ( Δ E ) 取值在0到1之间。伪码如下:
这里写图片描述

如果有人看完这个,希望能把另一篇博客上的题也能做一下,你就会发现所用的算法和模拟退火有一点差别,就是在得到次解的时候并没有按一定的概率接受它。所以模拟退火在计算几何的运用只是不完全的运用。。

猜你喜欢

转载自blog.csdn.net/qq_34921856/article/details/80832982
今日推荐