組合優化問題廣泛存在於運籌學、VLSI 設計、圖像處理、生物資訊等領域。許多經典問題(TSP、圖著色、設備佈局)屬於 NP 完全問題,缺乏多項式時間精確算法。1983 年 Kirkpatrick 等人將金屬退火物理過程引入優化領域,提出模擬退火——一種能以概率跳出局部最優、趨近全域最優的啟發式算法。本文系統闡述其核心原理、Metropolis 準則、冷卻進度表參數選擇,為後續 C# 實戰篇奠基。
金屬退火:高溫 → 緩慢降溫 → 晶體結構達到能量最低穩定態。若急速降溫(淬火)則陷入亞穩態(高能量局部極小值)。
對應優化:
| 物理量 | 優化對應 |
|---|---|
| 能量 E | 目標函數值(欲最小化) |
| 溫度 T | 控制參數,決定接受劣解概率 |
| 狀態轉移 | 鄰域搜索產生新候選解 |
| 熱平衡 | 馬可夫鏈達到準穩定分布 |
S、初始溫度 T₀、冷卻參數、終止條件T = α·T (α 接近 1,如 0.95)T 下重複 L 次:
S'ΔE = f(S') - f(S)ΔE < 0(更優)→ 無條件接受 S = S'ΔE ≥ 0(劣解)→ 以概率 P = exp(-ΔE / T) 接受T 足夠低、連續無改善、時間上限)則停止源自 1953 年統計力學論文。系統從能量 E₁ 變到 E₂ 的概率:
P = exp[-(E₂ - E₁) / kT] (k 為玻爾茲曼常數,優化中常併入 T 縮放)
T 大 → P ≈ 1 → 大幅接受劣解 → 全域探索T 小 → P → 0 → 僅接受微小劣解 → 局部精細化關鍵洞見:「以一定概率接受劣解」 是跳出局部最優的唯一機制。
| 參數 | 符號 | 選擇原則 | 典型值/策略 |
|---|---|---|---|
| 初始溫度 | T₀ | 接受率接近 1(充分探索) | 預運行統計 ΔE 平均值,設 T₀ ≈ -ΔE_avg / ln(0.8) |
| 衰減函數 | T(k+1) = α·T(k) | 幾何降溫最常用;亦可線性、對數 | α ∈ [0.8, 0.99],問題規模大取值大 |
| 馬可夫鏈長度 | L(k) | 每個 T 達準平衡所需步數 | 固定 L 或隨 T 增加;常設 100×n ~ 1000×n (n=變數數) |
| 終止條件 | — | 平衡解質量與計算時間 | T < T_min、連續 K 次無改善、CPU 時間上限 |
S' = S + step·random(),步長可隨 T 遞減標準 Metropolis:if (ΔE < 0 || random() < exp(-ΔE/T)) accept;
變體:Safer acceptance(避免溢位)、Lam 閾值法(預計算閾值加速)。隨機數品質直接影響算法統計特性,建議用 System.Random 或更高品質生成器。
N 次降溫最優解改善 < ε」或「總迭代次數上限」。本文建立了模擬退火的理論框架:物理隱喻 → Metropolis 核心 → 三大支柱參數化。下篇將給出完整 C# 實現,求解 f(x,y) = 5sin(xy) + x² + y² 的全域最小值,展示參數調試、收斂曲線繪製、多次運行統計等工程細節。理解參數選擇的「為何」,比複製代碼的「如何」更關鍵——模擬退火是一門參數調校的藝術。