模拟退火初步讲解

匿名 (未验证) 提交于 2019-12-03 00:37:01

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

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

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

Pi(Tk)=Ckexp(EiTk)

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

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

P(ΔE)=exp(ΔEkT)

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!