• 模拟退火是一个算法框架(framework),而不是一个具体的算法,原因在于,比如从当前状态,x(n)x(n+1),下一个状态该如何选择,可以是梯度下降,也可以是蒙特卡洛,爬山等等;

1. 模拟退火

模拟退火算法(simulated annealing,SA),1983年由 Kirkpatrick 等人提出,并将其成功应用于组合优化问题。“退火”是物理学术语,指对物体加温后再冷却的过程。

模拟退火算法源于晶体冷却的过程,如果晶体不处于最低能量状态,给固体加热再冷却,随着温度缓慢下降,固体中的原子按一定形状排列,形成高密度、低能量的有规则晶体,在算法中对应全局最优解

而如果温度下降过快(则必然存在一个参数控制温度的升降速度),可能导致原子缺少足够的时间排列成晶体结构,结果产生了具有较高能量的非晶体,这就是局部最优解。

模拟退火算法包含 Metropolis 算法和退火过程两部分。

  • Metropolis 算法又叫 Metropolis 抽样,是模拟退火算法的基础,在早期的科学计算中蒙特卡洛方法(Monte Carlo)是对大量原子在给定温度下的平衡态的随机模拟,当蒙特卡洛算法计算量偏大

2. 退火算法的参数控制

Metropolis 算法是模拟退火算法的基础,但直接使用 Metropolis 算法可能会导致寻优的速度太慢,以至于无法实用。为了确保算法在有限时间收敛,必须设定控制算法收敛的参数。

p={1,expE(n+1)E(n)T,E(n+1)<E(n)E(n+1)E(n)

上述公式中可调节的参数是控制退货快慢的参数 T

  • T 如果过大,就会导致退火太快,达到局部最优即迭代结束,
  • 如果取值过小,则会延长不必要的搜索时间;

在实际应用中,采用一个退火温度表,在退火的初期采用较大的 T 值,随着退火的进行,逐步降低。

posted on 2016-11-09 15:39  未雨愁眸  阅读(151)  评论(0编辑  收藏  举报