現代最佳化與調參
原課程的遺傳演算法、粒子群與蟻群最佳化都屬於「不需要梯度、只靠試誤」的演算法。這一章介紹這類方法在近二十年的發展,以及它們最常見的控制應用:自動調整控制器參數。
調 PID 時,我們能做的只是「給一組 \(K_p, K_i, K_d\),做一次步階實驗,算出一個成本」。成本對增益的關係寫不出公式,也沒有梯度,這就是黑箱最佳化。選哪種方法,主要看每做一次實驗要付出多少代價:
| 方法 | 適合的情況 | 通常需要的評估次數 |
|---|---|---|
| Ziegler–Nichols 等經驗法則(PID 章) | 只需要一兩次實驗,求一組「可以用」的起點 | 1~幾次 |
| GA、PSO | 模擬很便宜、區域最小值很多 | 數千~數萬 |
| CMA-ES | 模擬便宜、參數彼此相關或各方向尺度差很多(連續參數的首選) | 數百~數萬 |
| 貝氏最佳化 | 每次評估很貴(實機實驗、長時間模擬),參數少於約 20 個 | 數十~數百 |
| 梯度法(自動微分穿過模擬) | 有可微分的模型,參數很多 | 視問題而定,通常最少 |
本章用同一個例子比較這些方法:PID 章的受控體 \(G(s) = 1/(s+1)^3\),目標是讓步階響應的 ITAE 最小:
$$J(K_p, K_i, K_d) = \int_0^{20} t\,|e(t)|\,dt$$ITAE 對很晚才消失的誤差懲罰較重,最佳解通常超越量小、安定快。Ziegler–Nichols 臨界增益法得到的增益 ITAE = 5.20、超越量 53%。
發展 Milestones
| 年 | 里程碑 |
|---|---|
| 1942 | Ziegler–Nichols 調整法則 |
| 1960~70 年代 | 演化策略(Rechenberg、Schwefel)、遺傳演算法(Holland) |
| 1995 | 粒子群最佳化(Kennedy 與 Eberhart) |
| 1996~2001 | CMA-ES(Hansen 與 Ostermeier) |
| 1998 | EGO:以高斯過程與期望改善量做最佳化(Jones 等人),貝氏最佳化的基礎 |
| 2010 年代 | 貝氏最佳化用於機器人與實機控制器調參,安全版本 SafeOpt(2016) |
| 2020 年代 | 大型語言模型開始被用來寫控制程式、解讀規格、提議參數 |