本文将对模拟退火算法(Simulated Annealing)进行介绍,深入理解这个算法。
模拟退火算法和上一篇文章随机模拟算法中的Metropolis算法有着紧密的联系,在这里将详细探讨这种关系。
我们先从这个算法要解决的问题出发,逐步引出相应的算法。(pku, sewm,shinning)
一. 问题
人们经常遇到这样的问题:在某个定义域S内,求某个函数f(x)的最小值,形式化为Min f(x),x属于S。这是一个优化问题,根据f(x)的形式不同,有很多的优化算法来解决这类问题,简单的有穷举法(适用于定义域小的情况),图解法,数学分析法(求导数法)等精确算法,如果很难精确求得,还有很多的近似求解法,如贪心法(如爬山法,最速下降法,梯度下降法),随机模拟方法(MCMC等)。本文将介绍的模拟退火方法属于随机模拟方法,但是是可以求得精确解的(概率为1求得全局优化解),神奇吧!
二. 算法的基本思想
那怎么求解f(x)的最小值呢?它的思想是利用Gibbs分布:S中的一个点x的概率满足分布:p(x, T) = EXP(-f(x)/T)/Z,Z是归一化因子。现在假设T-> 0,可以看到f(x)越小,p(x,T)越大,意味着f(x)以非常大的概率取得最小值,这就是基本思想。现在是怎么操作的问题,这个分布是确定的,T已知,f(x)的表达式已知(对一个值,就是可以计算出来量),p(x,T)这个分布的形式就已知了,这时候我们利用Metropolis模拟算法去对这个分布抽样,在样本中,出现最多的非常有可能就是我们要求的最小值。似乎问题都解决了,然而如果直接把T设为很小,这个算法的计算时间太长了,因为S可能太大!不实用!
因此,我们采用了层层推进的办法,我们先把T设为一个较大的值Ti,然后在这个Ti的情况下采样,这个时

本文深入解析模拟退火算法(Simulated Annealing),探讨其与Metropolis算法的关系。模拟退火是一种优化方法,利用Gibbs分布解决定义域内的函数最小值问题。通过逐步降低温度(T)采样,最终找到接近全局最优解。算法过程包括设定初始温度、采样和Metropolis算法的应用。其名称源于物理退火过程,但本文侧重于算法原理的清晰阐述。
最低0.47元/天 解锁文章
879

被折叠的 条评论
为什么被折叠?



