以一定的概率接受恶化解,从而使算法具有逃脱局部极值和避免过早收敛的全局优化能力,接受准则为:
Y={1,exp(df/t),df>0df ≤ 0,
df为新生成的染色体适应度与父个体染色体适应度之差,即df = f(new)-f(old),t 为退火过程的控制参数。
查阅metropolis的那篇论文可以看到,整个算法核心在于计算系统能量变化
ΔE
,如果其小于0,则表明新移动会将系统的能量降低,于是接受(越低越稳定),如果其大于0,则生成0到1之间的一个随机数
α
,并与
exp(−ΔE/kT)
进行比较,如果
α>exp(−ΔE/kT)
则拒绝新移动,反之则接受,这就表示以一定概率接受恶化解。
只是这里我有一点不明白,为什么要生成一个随机数而不是用一个定值?文章后面好像解释说,这样可以使整个空间各态历经,利用了蒙特卡洛的思想,然而,还是不太明白。

Metropolis准则函数允许以一定概率接受恶化解,防止局部最优,应用于遗传算法中。通过比较新旧染色体适应度差df与控制参数t,结合系统能量变化ΔE,使用随机数α与exp(−ΔE/kT)比较决定是否接受新移动。该策略旨在实现全局搜索,但为何使用随机数而非定值尚存疑问。
789





