- 模拟退火是一个算法框架(framework),而不是一个具体的算法,原因在于,比如从当前状态,
x(n) ⇒x(n+1) ,下一个状态该如何选择,可以是梯度下降,也可以是蒙特卡洛,爬山等等;
1. 模拟退火
模拟退火算法(simulated annealing,SA),1983年由 Kirkpatrick 等人提出,并将其成功应用于组合优化问题。“退火”是物理学术语,指对物体加温后再冷却的过程。
模拟退火算法源于晶体冷却的过程,如果晶体不处于最低能量状态,给固体加热再冷却,随着温度缓慢下降,固体中的原子按一定形状排列,形成高密度、低能量的有规则晶体,在算法中对应全局最优解。
而如果温度下降过快(则必然存在一个参数控制温度的升降速度),可能导致原子缺少足够的时间排列成晶体结构,结果产生了具有较高能量的非晶体,这就是局部最优解。
模拟退火算法包含 Metropolis 算法和退火过程两部分。
- Metropolis 算法又叫 Metropolis 抽样,是模拟退火算法的基础,在早期的科学计算中蒙特卡洛方法(Monte Carlo)是对大量原子在给定温度下的平衡态的随机模拟,当蒙特卡洛算法计算量偏大。
2. 退火算法的参数控制
Metropolis 算法是模拟退火算法的基础,但直接使用 Metropolis 算法可能会导致寻优的速度太慢,以至于无法实用。为了确保算法在有限时间收敛,必须设定控制算法收敛的参数。
上述公式中可调节的参数是控制退货快慢的参数
T 如果过大,就会导致退火太快,达到局部最优即迭代结束,- 如果取值过小,则会延长不必要的搜索时间;
在实际应用中,采用一个退火温度表,在退火的初期采用较大的