最最佳化

最最佳化指從一組可選擇的方案中，根據一定標準選擇最佳方案的過程，往往要在特定情況下最大化或最小化某一特定函式或變數。一般分為離散最佳化、連續最佳化兩個子領域。最佳化問題出現在計算機科學、工程學到運籌學、經濟學等所有定量學科中，幾百年來求解方法的發展一直受到數學界的關注。

在更一般的方法中，最佳化問題往往要系統地選擇輸入值、計算函式值以最大化或最小化某實函式。將最佳化理論與技術推廣到其他的表述，構成了應用數學的一個分支。更一般地說，最佳化包括在給定定義域（或輸入）的情形下，找到某目標函式的 “最佳可達值”。

最佳化問題

最佳化問題可分為兩類，取決於變數是連續還是離散：

離散變數的最佳化問題稱作離散最佳化，當中的整數、排列或圖之類物件必須屬於可數集。
連續變數的最佳化問題稱作連續最佳化，當中最優自變數要屬於連續集。這類問題可以包括約束最佳化與多峰問題。

最佳化問題可用以下方式表示：

已知： 函式從某集合 A 對映到實數

求： 元素，使（“最小化”），或使（“最大化”）。

這樣表述後，稱作最佳化問題或數學規劃問題。很多現實問題與理論問題都可用這個一般框架建模。

由於下式成立：

只需解最小化問題。只考慮最大化問題的相反觀點是同理的。

物理學領域，使用這種技術提出的問題可稱 “能量最小化”，將函式 f 值視為所建模系統的能量。機器學習中，總要用損失函式持續評估模型的質量，損失函式取得極小值意味著一組可能的最優引數，同時具有最優（最小）的誤差。

A 通常是歐氏空間的子集，一般要求 A 的成員需滿足一組約束（等式或不等式）。f 的定義域 A 稱作搜尋空間或選擇集，A 的元素稱作候選解或可行解。

函式 f 有多種叫法，常見的有目標函式、判別函式、損失函式、成本函式（最小化）、效率函式、適應度函式（最大化），某些領域還有能量函式、能量泛函等等。使得目標函式取最值（取決於問題）的可行解就是最優解。

數學中，傳統最佳化問題通常用最小化形式表示。

極值是區域性的，定義為，滿足一定條件。例如，極小值要滿足

這就是說，在周圍的一些閉球上，所有的函式值都大於或者等於在該點的函式值。

極小值至少於附近的任何元素一樣好，最小值則至少與每個可行解一樣好。一般來說，除非目標函式是凸函式，否則會存在多個極小值。凸最佳化問題中，若有位於可行集內（不位於邊緣）的極小值，則它也是最小值；而非凸最佳化問題可能有多個極小值。

非凸問題所用的大量演算法（包括大多數商業求解器）都無法區分區域性最優解與全域性最優解，而是將前者視作原問題的實際解。全域性最佳化是應用數學與數值分析的一個分支，主要研究能在有限時間內收斂到非凸問題實際最優解的確定性演算法。

符號

最佳化問題常用特殊符號表示，如下：

2.1 函式最值

這是求，從實數集中選擇 x 時，目標函式的最小值。此問最小值為 1，出現在處。

相似地，

是求目標函式的最大值，其中 x 是任意實數。由於目標函式無界，所以不存在最大值，答案是 “無窮大” 或 “未定義”。

2.2 最佳輸入

或等價的

這是求引數 x 在區間時，能使目標函式取最值的值。此問題的答案是，因為不可行，不屬於可行集。

相似地，

或等價的

表示使目標函式取最大值的對，且 x 要滿足約束：位於區間內。此問題的答案是與，其中 k 的範圍是所有整數。

算符有時也作，分別代表最小值點與最大值點。

歷史

皮埃爾・德・費馬與約瑟夫・拉格朗日發現了基於微積分的公式以確定最優值，艾薩克・牛頓與卡爾・弗里德里希・高斯提出迭代法以逼近最優值。

用於部分最佳化情形的 “線性規劃”（linear programming）是喬治・伯納德・丹齊格提出的，不過其中大部分理論是列昂尼德・坎託羅維奇於 1939 年提出的。丹齊格在 1947 年提出單純形法，馮・諾依曼等人也在同時期致力於線性規劃的理論研究（如對偶）。

主要分支

線性規劃：當目標函式 f 是線性函式而且集合 A 是由線性等式函式和線性不等式函式來確定的， 我們稱這一類問題為線性規劃
整數規劃：當線性規劃問題的部分或所有的變數侷限於整數值時， 我們稱這一類問題為整數規劃問題
二次規劃：目標函式是二次函式，而且集合 A 必須是由線性等式函式和線性不等式函式來確定的。
分數規劃：研究的是如何最佳化兩個非線性函式的比例。
非線性規劃：研究的是目標函式或是限制函式中含有非線性函式的問題。
隨機規劃：研究的是某些變數是隨機變數的問題。
動態規劃：研究的是最優策略基於將問題分解成若干個較小的子問題的最佳化問題。
組合最最佳化：研究的是可行解是離散或是可轉化為離散的問題。
無限維最最佳化：研究的是可行解的集合是無限維空間的子集的問題，一個無限維空間的例子是函式空間。
凸最佳化研究目標函式為凸函式（最小化）或凹函式（最大化），且約束集為凸集的問題。這可以看成非線性規劃的特例，或凸二次規劃的推廣。
線性規劃（LP），是凸規劃的一種，研究目標函式 f 為線性函式、約束只包含線性等式與不等式的問題。若這種約束集是有界集合，又稱作多面體或多胞形。
二階錐規劃（SOCP）是凸規劃的一種，包括某些型別的二次規劃。
半正定規劃（SDP）是凸規劃的一個子領域，其中底變數是半正定矩陣，它是線性規劃與凸二次規劃的推廣。
錐規劃是凸規劃的一般形式。LP、SOCP、SDP 都是其特例。
幾何規劃是一種表示不等式約束的正項式、表示等式約束的單項式化為凸規劃的技術。
整數規劃研究部分或所有變數取整數值的線性規劃，不屬於凸規劃，往往比常規線性規劃困難很多。
二次規劃允許目標函式包含二次項，而可行集須用線性等式與不等式指定。若有特殊形式的二次項，則屬於凸規劃。
分式規劃研究兩非線性函式之比的最佳化。一類凹分式規劃可轉為凸最佳化問題。
非線性規劃研究目標函式和 / 或約束包含非線性部分的一般情形。可能屬於凸規劃也可能不屬於，規劃是否為凸一般會影響求解難度。
隨機規劃研究某些約束或引數取決於隨機變數的問題。
穩健最佳化類似於隨機規劃，試圖捕捉最佳化問題基礎資料中的隨機性。穩健最佳化試圖找到在不定集定義的不確定性的所有可能下，都有效的解。
組合最佳化關注可行解集離散，或可簡化為離散情形的問題。
隨機最佳化用於搜尋過程中的隨機（噪聲）函式測量或隨機輸入。
無窮維最佳化研究可行解集為無窮維空間（如函式空間）子集的情形。
啟發式與元啟發演算法對待最佳化問題（幾乎）不做假設。啟發式演算法一般不能保證找到最優解，而可用於找到很多複雜最佳化問題的近似解。
約束滿足研究目標函式 f 為常數的情形（常見於人工智慧領域，特別是自動推理）。
約束程式設計是一種程式設計正規化，變數間關係表為約束。
分離規劃（disjunctive programming）研究必須滿足至少一個約束，而非所有約束的問題。分離規劃尤其適用於排程。
空間對映是工程系統建模與最佳化的概念，利用具有物理意義的代理模型，達到保持模型精度，而減小計算量的效果。

在一些子領域中，這些技術用於動態環境（隨時間變化的決策）中的最佳化：

變分法是指找到實現某目標的最佳方法，如找到邊界為特定曲線，而面積儘可能小的曲面。
最優控制是變分法的推廣，引入了控制策略。
動態規劃是解隨機最佳化問題的一種方法，具有隨機、未知的模型引數，其最佳化策略基於將問題分割為子問題。描述子問題間關係的方程叫做貝爾曼方程。
均衡約束數學規劃問題的約束包含變分不等式或互補式。

4.1 多目標最佳化

在最佳化問題中加入多個目標，會增加問題複雜性。例如，最佳化結構設計時人們希望設計輕而堅固。兩目標發生衝突時，就要做出權衡：可能有一種最輕的設計、一種最堅固的設計與無數種重量與強度相折中的設計。犧牲一項標準，改進另一項標準的折衷設計集合稱作帕累託集，據最佳設計的重量與強度繪製的曲線叫帕累託前沿（Pareto frontier）。

若設計不被其他設計支配，就是 “帕累托最優” 的（等同於 “帕累託有效”，或在帕累託集合中）：被支配設計在某些方面比別的設計差，而在任何方面都不比別的設計好。

帕累托最優給出了理想目標，而沒有對目標的組合進行相對評定。在帕累托最優方案中進行選擇的任務屬於決策者。

多目標最佳化問題可進一步推廣為向量最佳化，其中（部分）排序不再由帕累託排序給出。

4.2 多峰、全域性最佳化

最佳化問題通常是多峰的，即擁有多個好的解決方案，它們可能都是全域性最優解（成本函式值相同）。獲得所有（或至少一部分）解是多峰最佳化的目標。

經典最佳化技術採用的迭代法面對多峰問題的表現並不令人滿意，因為即使執行起點不同，也不能保證獲得不同的解。

對可能存在多個極值的全域性最佳化問題，常用演算法有進化演算法、貝葉斯最佳化與模擬退火等。

臨界點與極值的分類

5.1 可行性問題

可滿足性問題又稱可行性問題，是指在不考慮目標值的情況下找到任何可行解的問題。可以視為數學最佳化的一種特例，即每個解的目標值都相同，於是每個解都是最優解。

很多最佳化演算法都要從可行點出發。獲得可行點的一種方法是用鬆弛變數放鬆可行性條件，只要有足夠的鬆弛變數，任何起點都是可行的。然後，最小化該鬆弛變數，直到鬆弛不為正。

5.2 存在性

卡爾・魏爾施特拉斯的極值定理指出，緊集上的連續實值函式會達到其最值。更一般地，緊集上的下半連續函式會達到其最小值，緊集上的上半連續函式會達到其最大值。

5.3 最優性的必要條件

費馬引理指出，無約束問題的最優點是駐點，即目標函式的一階導或梯度為零（見導數判別法）。更一般地，最優點可能出現在臨界點，即目標函式的一階導或梯度為零或未定義，或在選擇集的邊界上。一階條件（組）是指令內部最優點處的一階導等於零的方程（組）。

等式約束問題的最優點可用拉格朗日乘數法找到。帶等式和 / 或不等式約束的問題的最優值可由卡魯什 - 庫恩 - 塔克條件求得。

5.4 最優性的充分條件

一階導檢驗可以識別可能是極值的點，但不能區分極小值與極大值。無約束問題的目標函式二階可微時，可透過檢驗二階導（矩陣，叫做黑塞矩陣）來區分；有約束問題中，可檢驗目標函式與約束條件的二階導矩陣（稱作有界黑塞矩陣）。區分極大極小值與其他駐點的條件叫做二階條件（見導數判別法）。若候選解滿足一階條件，則滿足二階條件便足以確定至少是區域性最優。

5.5 最優解的敏感性與連續性

包絡定理描述了基本引數變化時，最優解的值如何變化。計算這種變化的過程稱為比較靜力學。

Claude Berge（1963）提出的極大值定理描述了最優解作為基本引數之函式的連續性。

5.6 最優解的計算

對目標函式二階可微的無約束問題，可透過尋找梯度為零的點（駐點）確定一些臨界點。更一般地，對凸函式及其他區域性利普希茨函式的最小化問題，零次梯度意味著已找到極小值。

此外，臨界點還可根據黑塞矩陣的正定性分類：若臨界點處的黑塞矩陣是正定的，則是極小值；若是負定的，則是極大值；若是不定的，則是某種鞍點。

在拉格朗日乘數的幫助下，有約束問題往往可以轉為無約束問題。拉格朗日鬆弛法也能為困難的約束問題提供近似解。

目標函式是凸函式時，極小值也就是最小值。對凸函式的最小化，存在高效的數值技術，如內點法。

5.7 全域性收斂

更一般地，若目標函式不是二次函式，那麼很多最佳化方法都會用其他方法確保某些迭代子列收斂到最優解。第一種仍很流行的是線搜尋，這種方法沿一個維度對函式進行最佳化。第二種越來越流行的，是置信域方法。線搜尋與置信域方法都被用於現代不可微最佳化中。通常，全域性最佳化器比先進的區域性最佳化器（如 BFGS 演算法）慢得多，因此通常可從不同起點啟動區域性最佳化器，構建高效的全域性最佳化器。

計算最佳化技術

求解時往往使用有限步內終止的演算法，或（在某些類的問題上）收斂到解的迭代法，或儘可能為某些問題提供近似解的啟發式演算法（迭代不一定收斂）。

6.1 最佳化演算法

喬治・伯納德・丹齊格為線性規劃提出的單純形法
單純形法的推廣，為二次規劃與線性分式規劃設計
特別適用於網路最佳化的單純形法變體
組合演算法
量子最佳化演算法

6.2 迭代法

迭代法用於解非線性規劃，依其求值的是黑塞矩陣、梯度或函式值而有所不同。求黑塞矩陣（H）和梯度（G）可以提高收斂速度，但對變化足夠平滑的函式，這會增加每次迭代的計算複雜度（計算成本），有時可能會過高。

最佳化器的一個重要指標就是所需的函式求值次數，因為這往往需要大量計算，通常比最佳化本身的計算量大得多，因為最佳化器要對 N 個變數進行操作。導數為此類最佳化器提供了詳細資訊，但算起來更困難。例如，近似梯度至少要求 N+1 次函式值。二階導的近似（黑塞矩陣需要）每次迭代要求 N² 次函式值，例如牛頓法，而更簡單的純梯度最佳化器則只需要 N 次。最佳化器的選擇取決於具體問題。

需要黑塞矩陣的方法（或用差分計算近似值）：
牛頓法
序列二次規劃：基於牛頓法，適於中小尺度約束問題。某些版本可處理高維問題。
內點法：這是一大類用於約束最佳化的方法，其中有些只使用（次）梯度資訊，另一些則需要黑塞矩陣。
需要梯度的方法（或近似值，或次梯度）：
座標下降法：每次迭代更新一次座標。
共軛梯度法：針對大型問題的迭代法（理論上在二次目標函式的有限步數內終止，但在有限精度計算機上不常能達到）。
梯度下降法（或 “最陡下降法”“最陡上升法”）：具有歷史與理論意義的（較慢）方法，在尋找巨大問題的近似解時再次受到關注。
次梯度法：使用廣義梯度迭代大型區域性利普希茨函式的方法。根據 Boris T. Polyak 的觀點，次梯度投影法類似於共軛梯度法。
捆綁下降法（Bundle method of descent）：適用於區域性利普希茨函式的中小型問題，尤其適用於凸最小化問題（類似於共軛梯度法）。
橢球法：適用於目標函式為擬凸函式的小型問題的迭代法，在理論上有重要意義，特別是在確定某些組合最佳化問題的多項式時間複雜度方面。與擬牛頓法有相似之處。
弗蘭克–沃爾夫法（條件梯度法）：用於具有線性約束的特殊結構問題，特別是交通網路問題。對於一般的無約束問題簡化為梯度法，而梯度法（對幾乎所有問題）已經過時。
擬牛頓法：適於大中型（N・"convex programming" by Lawrence E. Blume・"Arrow–Debreu model of general equilibrium" by John Geanakoplos.

6.3 電氣工程

最佳化技術在電氣工程的一些常見應用如有源濾波器設計、減少超導儲磁系統中的雜散磁場、微波結構的空間對映設計、手機天線、基於電磁學的設計等等。自 1993 年提出空間對映以來，微波元件與天線的電磁驗證設計最佳化已廣泛使用了適當的物理 / 經驗代理模型及空間對映方法。最佳化技術也用於功率流分析。

6.4 土木工程

最佳化已廣泛用於土木工程。營建管理與交通工程是土木工程中非常依賴最佳化的主要分支。透過最佳化解決的最常見的土木工程問題有道路的切割與填築、基礎設施生命週期分析、資源均衡、水資源分配、交通管理及進度最佳化。

6.5 運籌學

另一個廣泛使用最佳化技術的領域是運籌學。運籌學也使用隨機建模與模擬來支援改進決策。近年來，運籌學越來越多地使用隨機規劃模擬適應事件的動態決策；此類問題可透過大規模最佳化與隨機最佳化方法來解決。

6.6 控制工程

數學最佳化被廣泛用於現代控制器設計。模型預測控制（MPC）與即時最佳化（RTO）等高階控制器都採用了數學最佳化。這些演算法線上執行，透過迭代求解約束與待控制系統模型在內的數學最佳化模型，反覆確定決策變數的值，如工藝裝置中的扼流圈開口。

6.7 地球物理

最佳化技術常用於地球物理引數估計。根據一組測量資料（如地震記錄），通常要求底層岩石與流體的物理特性與幾何形狀。地球物理學中大多數問題都是非線性的，確定性方法與隨機方法都有廣泛使用。

6.8 分子建模

構象異構常用非線性最佳化方法。

6.9 生物系統建模

最佳化技術被用於計算系統生物學的許多方面，如建立模型、最佳化實驗設計、代謝工程與合成生物學等。線性規劃被用於計算發酵產物的最大可能產量，從多個微陣列資料集推斷基因調控網路以及從高通量資料推斷轉錄調控網路等。非線性規劃被用於分析能量代謝，並被應用於代謝工程與生化途徑的引數估計。

與人工智慧的關係

現代的計算機科學技術和人工智慧科學把最最佳化作為一個重要的領域來研究。我們也可以認為人工智慧的一些演算法，就是模擬了人類尋求實際問題最優解的過程。例如，利用人工智慧方法設計軟體，配合外部的電子裝置例如攝像頭識別人臉；利用資料探勘和神經網路演算法來尋找投資的最佳時機等。

閱讀更多