CSDN博客

img yuanqingfei

SA

发表于2004/7/9 2:50:00  811人阅读

退火概念是80年代初期研究组合优化问题时提出的,该方法解决优化问题
的出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似
性。在对固体物质进行退火处理时,通常是先将它加温熔化,使其中的粒子
可以自由运动,然后降温,粒子就逐渐形成低能态的晶体。如果凝结点附近
温度下降足够慢,那么固体物质一定能够形成最低能量的状态。模拟退火就
是模拟了这一过程,从而求得组合优化问题的全局(近似)最优解。

设E[{xi}]表示某系统在微观状态{xi}({xi}为一组状态变量,如速度、
位置等)下的内能,对于给定温度T,如果系统处于热平衡状态,那么
E[{xi}]将服从Boltzmann分布,分布函数为:

f = C(T)e^(-E[{xi}]/kT)
C(T)-1/(e^(-E[{x1}]/kT)+e^(-E[{x2}]/kT)+...+e^(-E[{xn}]/kT))

其中k是Boltzmann常数。

T下降将导致内能E下降,如果T下降速度足够慢,那么系统就可以保持热
平衡,使其内能在该温度下达到最低值。当T=0(开氏温度)时,内能将达到
最小值。这样的降温过程就是退火过程。


在退火过程中经常要用Metropolis抽样,它可以用来模拟温度T下系统的
热平衡。

随机选一初始状态{xi}, 然后随机地给系统加一个扰动{delta xi},则
内能增量为:

delta E = E[{xi+delta xi}] - E[{xi}]

如果delta E<0,那么这个扰动就将被接受,否则该扰动将按概率
e^(-delta E/kT) 被接受。如果扰动被接受,那么就用{xi+delta xi}代替
原来的{xi};否则就产生一个新的扰动......

如此反复,则{xi}将逐渐满足前述Boltzmann分布。

如果让T从一个足够大的值逐渐下降,对于每个T都用Metropolis抽样使
系统热平衡,那么到T=0时,就实现了模拟退火,E[{xi}]达到最小值。


计算机实现模拟退火的思想是:将每种可能的组合状态作为{xi},E作为
目标函数,T作为控制参数,令T逐渐减小为0,从而得到目标函数最优值。

基本步骤为:

初始化:对初始状态{xi},取初始值T(0),计算目标函数E[{xi}];
1. 产生随机扰动,计算delta E = E[{xi+delta xi}] - E[{xi}]
2. 若delta E<0, goto 4,否则产生[0,1]上的一个均匀分布随机数y;
3. 若e^(-E/T)<=y,goto 1 ;
4. 用{xi+delta xi}代替{xi},E+delta E代替E;
5. 检验Metropolis抽样是否稳定,若不稳定,goto 1;
6. T减小;
7. 是否满足目标,是则结束,否则goto 1。


模拟退火是否能达到E的最小值决定于T(0)是否足够大,和T是否下降得
足够慢,以及对于每个T,Metropolis抽样是否稳定。

模拟退火的典型特征是除了接受目标函数的改进外,还接受一个衰减极限,
当T较大时,接受较大的衰减,当T逐渐减小时,接受较小的衰减,当T为0
时,就不再接受衰减。这一特征意味着模拟退火与局部搜索相反,它能避开
局部极小,并且还保持了局部搜索的通用性和简单性。

值得注意的是,当T为0时,模拟退火就成为局部搜索的一个特例。

0 0

相关博文

我的热门文章

img
取 消
img