Skip to content

模拟退火(Simulated Annealing, SA)

模拟退火源于固体退火过程(加热再缓慢冷却以降低缺陷)。在组合/连续优化中,Kirkpatrick 等将其用于以可控概率接受变差的邻域移动,从而跳出局部最优。属于单点、基于邻域的元启发式,见 元启发式总览


接受准则与降温的作用

在固定 下,用 Metropolis 思想(记 ,最小化):

  • :总接受。
  • :以概率 接受,从而仍有机会朝劣向走一步、跨出谷口。

温度对探索程度的影响可概括为:

  • 大: 小,接受劣解的意愿强,搜索偏全局。
  • 小:几乎只在不升高目标时移动,偏局部抛光。

降温:按时间表降低 (如 ,或分档表、分段常数)。注意:

  • 降得过快:过早近似贪心,易被困。
  • 过慢:同温步数大,总计算量高。
  • 常在同温下做若干内层步,到「充分搅拌」或步数上界再降温。

邻域与解编码 的邻域 与具体实例绑定;要足以在可行解之间连通、且从 中抽样或枚举候选时, 的求值在工程上可承受。


主循环(最小化示意)

以目标函数 在邻域内搜索(最小化;若最大化,可对 讨论,或把「劣」改为「不增目标真值侧」的对应叙述)。

▶ 模拟退火主循环(单解、邻域搜索)

1. 初始化

生成初始解 s(随机或经简单启发式),记当前最优解 s⋆ ← s。设初温 T ← T₀>0,并选定降温表与每温度下的内层步数/迭代次数。

2. 同温内迭代

在温度 T 下,重复若干内层步,直到内层步数上限或同温收敛判据;每一步:

  • 由邻域算子自 s 生成候选解 s′;
  • 计算 Δ = f(s′) − f(s);
  • 若 Δ ≤ 0,令 s ← s′;
  • 若 Δ>0,以概率 min(1, exp(−Δ/T)) 令 s ← s′,否则保持 s;
  • 若 f(s)<f(s⋆)(严格改进),更新 s⋆ ← s。

3. 降温

按预设计划更新 T(如 T ← αT,标量 α∈(0,1)),或按时间表降温。

4. 终止

若 T 低于阈值、或达到总迭代/时间/无改进步数,则停;输出 s⋆。

个人笔记