第二章 文獻回顧
2.2 工程最佳化問題型態與演算法
2.2.2 常見最佳化演算法
將最佳化問題分類成各種不同型態,讓使用者方便選擇求解方法,
可依不同數學模式組成架構,有不同適用的最佳化演算法。介紹簡單 的數學最佳化方法前,先以分析變數目的之靜、動態問題為兩大主體 分類,並參考 Reklaitis 等人(1983)、徐業良(1995)與張斐章.張立秋 (2010)之文獻,整理介紹如下:
1. 靜態問題:判斷在區域內給定之變數值
x
*是否為最佳解(一般都可 表示為最小值方式求解)。在此只簡略介紹數學判斷方法與求最 佳解的基本數學概念。假設函數f
是二次可微分,若要滿足x
*為 區域內極小值,則f
在x
*處的一階與二階微分須滿足充分和必要 條件。必要條件:
f x ( )
* 0
(2-2)
2f x ( )
* H x ( )
* 0
(2-3)充分條件:
若
f x ( )
* 0
且H x ( )
* 0
其中
動態問題中,再依變數量問題型態分成單變數與多變數。先以單 變數模式說明基本的最佳化數學方法如下:
1. 區間消去法:搜尋邏輯為將兩測試點的函數值相互比較,其方式 是將搜尋範圍的不確定區間不斷地削去縮減,找出函數最佳解,
如:半區間法(二分法)、黃金切割法等,適用於連續、不連續 或離散變數函數。
2. 割線法(線性內插法):以前兩次計算值畫出一條割線,以此割線 近似函數,並以割線與變數軸交點作為下次計算點之方法,也適 用於連續、不連續或離散變數函數。
3. 多項式近似法(點估計法):若變數的函數形狀夠平滑,則可用多 項式簡單地去近似小區段的函數,反覆以此方式求下個估計點,
來估出算最佳點,如二次估計法、波爾法(Powell Method),只適 用於連續變數問題型態。
4. 微分方法:若變數為可微分函數就能用導數方式來不斷逼近求解,
如:牛頓.雷佛森法(Newton-Raphson Method)、正割法,適用於 可微分的連續變數問題。
而動態問題中的多變數模式函數,基本上也是以單變數的簡單方 法去做延伸,常見的最佳化演算法大致可分為三類:1. 直接搜尋法、
2. 梯度法與 3. 二階法,又依求目標函數導數項次數,簡單分成零次 法、一次法與二次法。
1. 第一類:直接搜尋法,只以函數值來引導最佳解的搜尋方法。
(1) 簡單搜尋法或稱
S
2法(Simplex Method),運用設計空間上一 些模式的策略來搜尋解,有啟發的味道存在,但此種方法不 考慮之前的計算數據來加快搜尋速度,因此較耗時,且只適 用於二維度的問題。(2) 虎克‧吉夫斯(Hooke-Jeeves)模式搜尋法,使用問題空間變數 的座標方向為搜尋方向,且特別的是能考慮之前在此方向的 搜尋結果並做結合的一種搜尋策略,但不適用於目標函數形 狀扭曲或細長情形,不過此方法也含有一種啟發的基本概 念。
(3) 波爾(Powell)共軛方向法,以二次式近似模式的理論求解 法。
2. 第二類:梯度法,需要目標函數的一階微分來定義最佳解的搜尋 方向,一般搜尋速度比直接搜尋法來得快,不過計算上相對較複 雜。
(1) 簡單梯度法(Simple Gradient Method),以函數一階微分方法 決定搜尋方向,並配合一個係數調整每次迭代的移動大小。
(2) 最陡坡降法(Steepest Descent Method)或稱柯契法(Cauchy’s Method),也屬於簡單梯度法一種,主要不同的是搜尋步移 大小會隨每次迭代做調整。
(3) 共軛梯度法(Conjugate Gradient Method),結合最陡坡降法與 牛頓法之優點。
(4) 擬牛頓法(Quasi-Newton method),以數值近似取代牛頓法要 計算的 Hessian 矩陣。
3. 第三類:二階法,需要求 Hessian 矩陣,即計算目標函數二階導數 的方法。
牛頓法(Newton’s Method),收斂速度快,但計算過程相對較 繁雜。
此外,針對限制性與非限制性問題,兩者所使用的數學方法基 本概念相似,主要差別在於限制問題的目標函數或變數值,也要同時 滿足相關的條件。針對變數量和限制條件較少時,因目標函數與限制 條件都是變數的函數,因此可使用一些方法處理這些限制式,譬如:
使用拉氏函數來降低限制條件數,將目標函數擴大,相對的會增加變 數量。不過,一般解此類問題還是會選擇簡單的數學搜尋方法求解。
限制性最佳化問題一些常見數學方法如下:
1. 線性規劃:傳統的高斯.喬登(Gauss-Jordan)消去法、兩變數 的圖解法、標準的簡易法…等。
2. 非線性規劃:懲罰概念的轉換法…等。
3. 離散變數:整數的枝界法、序列近似法…等。
4. 多目標問題型態:折衷規劃法、分析層級程序…等。
5. 不連續或不可微分問題:直接搜尋法、隨機搜尋法…等。
將以上常見的各種數學方法,適用於不同問題型態上,簡單整理 如圖 2.3。其中,以六邊形表示的一些搜尋方法,可約略地發現已有 近代啟發式最佳化演算法的一種全域性搜索、一種經驗式累積的雛 形。
圖 2.3 常見最佳化問題型態分類與適用之數學方法
由以上可知,無論是哪種最佳化演算之數學方法,依搜尋過程所 需運算的目標函數導數項次可簡單分為,零次法、一次法、二次法…、
高次法。除零次法外,基本上都要運算複雜的導函數值,並且導數值 要存在或連續等假設情況下才能使用。儘管這些方法在數學上的理論 求解架構相當有系統性,或是所得到的最佳解符合理論最佳解抑或是 極逼近最佳值,但於實際問題上的應用上可能不是單純假設或簡化可 以求解的,比如:大規模的NP-complete問題(說明:若能找到一個 有效方法,所需計算量隨某冪函數(polynomial)遞增,則此問題稱 為P-問題; NP-問題中之NP為nondeterministic polynomial 的縮寫,
意指所需計算量隨冪函數非確定性地增加,每一個求解組和儲存記憶 至少需完成一次計算:NP-complete問題是NP問題中的難題,所需儲 存記憶隨冪函數遞增,但不保證所需計算量只隨冪函數遞增。)或 NP-hard問題(說明:NP-hard問題之計算比所有NP問題更為困難,此 問題所需儲存記憶可能呈指數遞增,其所需計算量亦非呈指數遞增不 可。),需要大量計算時間同時需儲存大量計算產生數值,因此必須 考慮電腦或計算機的計算效率和記憶空間大小。因而近年來由最佳化 演算數學方法中之零次法,逐漸發展出一系列所謂之「啟發式最佳化 演算法」(Heuristic optimization algorithms),可依問題特性來設計,
並能在有效計算時間內求出可被接受的近似最佳解。
啟發式演算法結合了隨機搜尋演算法的優點(如:能跳脫出,陷 入局部性搜尋的困境、比較不會有數值計算上的問題產生、搜尋原理 簡單和能有效搜尋到最佳解附近區域)與直接搜尋方法的優點(如:能 使用當前或之前的計算值資料,類似使用者能夠考慮以往的經驗來決 定下一次迭代的設計值一樣、加快收斂速度…等)。
傳統啟發式最佳化演算法的搜尋方法通常是,先利用貪心法則
(Greedy Approach)在短時間內將問題範圍縮小至最佳解附近區域,
並得近似起始點,接著再以局部最佳化方法來改善此近似值。而一般 常見的啟發式最佳化演算法有:遺傳演算法(Genetic Algorithm,GA)、
模擬退火法(Simulated Annealing,SA)、禁忌搜尋法(Tabu Search,TS)…
等最佳化演算法,此部分在接續的 2.3 節有介紹。因此,接下來就對 傳統數學最佳化演算法與啟發式最佳化演算法之優缺點做比較。