哈爾濱工業大學計算機學院-最優化方法-課程總結

1. 前言

  • 本課程由數學系開設,旨在講述求解數學問題的各類最優化方法。
  • 本博客僅對課程中的以下內容進行詳細介紹:
    • 凸集、凸函數、凸規劃
    • 線性規劃
      • 線性規劃標準形式
      • 單純形法
    • 無約束最優化方法
      • 最優性條件
      • 最速降低法
      • 牛頓法
    • 約束最優化方法
      • Kuhn-Tucker 條件
      • 罰函數法
      • 閘函數法

2. 凸集、凸函數、凸規劃

2.1 凸集

  • 凸集的定義:
    • \(S \subseteq \mathbf { R } ^ { n }\),若\(\forall x ^ { ( 1 ) } , x ^ { ( 2 ) } \in S , \lambda \in [ 0,1 ]\),必有\(\lambda x ^ { ( 1 ) } + ( 1 - \lambda ) x ^ { ( 2 ) } \in S\),則稱\(S\)爲凸集。
  • 形式化理解凸集的定義,即集合中任意兩點連線上的點都在集合內。
  • 對於凸集的證實,每每利用定義進行證實。

2.2 凸函數

  • 凸函數的定義:
    • 設集合\(S \subseteq \mathbf { R } ^ { n }\)爲凸集,函數\(f : S \rightarrow \mathbf { R }\)。若\(\forall x ^ { ( 1 ) } , x ^ { ( 2 ) } \in S , \lambda \in ( 0,1 )\),恆有\(f \left( x ^ { ( 1 ) } + ( 1 - \lambda ) x ^ { ( 2 ) } \right) \leq \lambda f \left( x ^ { ( 1 ) } \right) + ( 1 - \lambda ) f \left( x ^ { ( 2 ) } \right)\),則稱\(f\)爲凸集\(S\)上的凸函數。
    • 若是上面不等式以嚴格不等式成立,則稱\(f(x)\)爲凸集\(S\)上的嚴格凸函數。
  • 凸函數的證實:
    • 凸函數與一階特徵、二階特徵互爲充要條件,每每利用二階特徵進行證實,
    • 二階特徵:
      • \(f\)\(S\)上凸,等價於,\(S\)中任意一點,其對應的海塞矩陣半正定。
      • \(f\)\(S\)上嚴格凸,等價於,\(S\)中任意一點,其對應的海塞矩陣正定。
  • 凸函數是定義在凸集上的函數,若是要證實凸函數,首先要說明定義域爲凸集。

2.3 凸規劃

  • 凸規劃的定義:
    • 若是問題\((fS)\)中,\(S\)爲凸集,\(f\)爲凸函數,則稱這個問題是凸規劃。
  • 凸規劃的定理:
    • 在凸規劃問題中,局部最優解也是全局最優解。
    • 若是\(f\)爲嚴格凸函數,則該局部最優解是惟一全局最優解。
  • 依據凸規劃的定理,證實一個局部最優勢爲惟一全局最優解,只需證實函數\(f\)爲嚴格凸函數。
  • 凸規劃的性質十分利於咱們尋找問題的最優解,所以咱們常常須要證實一個問題是凸規劃問題。

3. 線性規劃

3.1 線性規劃標準形式

  • 首先介紹線性規劃的標準形式,以後的單純形法都是在標準形式上進行計算,對於不是標準形式的線性規劃須要對其進行轉換。
  • 標準形式以下:
    \[( L P )\left\{ \begin{array} { c } { \operatorname { max } z=c ^ { T } x } \\ {s.t. \quad Ax = b } \\ {\quad \quad x \geq 0 } \end{array} \right.\]
  • 四個特色:
    • 目標最大化
    • 約束爲等式
    • 決策變量非負
    • 右端項非負
  • 採用以下方式,將通常形式轉化爲標準化形式:
    • 極小化目標函數的問題:利用負號轉化爲目標最大化
    • 約束不是等式的問題:引入鬆弛變量
    • 變量無符號限制的問題:用兩個非負變量之差來表示一個無符號限制的變量
    • 右端項有負值的問題:乘以\(-1\)

3.2 單純形法

  • 單純形法的基本思路是有選擇地取基本可行解,便是從可行域的一個極點出發,沿着可行域的邊界移到另外一個相鄰的極點,要求新極點的目標函數值不比原目標函數值差。
  • 單純形法要求係數矩陣中存在單位陣,將其做爲初始的基本可行解,以後一步步迭代。對於某些標準形式中不含有單位陣的線性規劃問題,能夠採用大M法和兩階段法。
  • 單純形法的計算比較簡單,這裏只給出例子進行說明。
    \[( L P ) \quad \left\{ \begin{array} { c } { \operatorname { max } z=1500x_1+2500x_2} \\ { 3x_1+2x_2+x_3 = 65 } \\ { 2x_1+x_2+x_4 = 40 }\\ { 3x_2+x_5 = 75 }\\ { x_1,x_2,x_3,x_4,x_5 \geq 0 } \end{array} \right.\]
  • 單純形表以下所示:
  • 最優解爲\(x _ { 1 } = 5, x _ { 2 } = 25 , x _ { 4 } = 5\)
  • 與單純形法相對應的還有對偶單純形法,兩者的算法流程圖對好比下所示:

4. 無約束最優化方法

4.1 最優性條件

  • 一階必要條件:若是\(x^*\)爲局部最小點, 則\(x^*\)爲駐點,即該點梯度爲\(0\)
  • 二階必要條件:若是\(x^*\)爲局部最小點, 則該點梯度爲\(0\),且海塞矩陣半正定。

4.2 最速降低法

  • 該方法就是就是梯度降低法的雛形,是求解無約束問題\(minf(x)\)的古老而基本的方法。
  • 在迭代收斂的過程當中,每一步令該點的負梯度方向爲降低方向。
  • 在降低方向肯定後,須要找到步長\(\lambda\),因爲是單變量求最優的問題,採用一維搜索的方式便可。
  • 最速降低法的「最速」是局部性質,在舉例最優勢較遠處降低的比較快,而距離較近的時候會發生扭擺現象。
  • 最速降低法是一種線性收斂的算法,在特定條件下具備全局收斂性。
  • 該算法的流程圖以下所示:

4.3 牛頓法

  • 牛頓法的思想是利用二次函數近似目標函數,把這個二次函數的極小點做爲新的迭代點。該方法應用的前提是函數\(f(x)\)二次連續可微,而且求解的問題是無約束問題\(minf(x)\)
  • 其數學公式由泰勒展開式取前三項獲得,即二階Taylor近似函數:
    \[q_k( x ) = f \left( x ^ { ( k ) } \right) + \nabla f ^ { \mathrm { T } } \left( x ^ { ( k ) } \right) \left( x - x ^ { ( k ) } \right) + ( 1 / 2 ) \left( x - x ^ { ( k ) } \right) ^ { \mathrm { T } } \nabla ^ { 2 } f \left( x ^ { ( k ) } \right) \left( x - x ^ { ( k ) } \right)\]
    • \(x^{(k)}\)是第\(k\)次的迭代點。
  • 對該函數求駐點獲得:
    \[\nabla q_k( x )= \nabla f \left( x ^ { ( k ) } \right) + \nabla ^ { 2 } f \left( x ^ { ( k ) } \right) \left( x - x ^ { ( k ) } \right) = 0\]
  • 顯然只要計算\(x^{(k)}\)點的梯度值,以及海塞矩陣,便可找到下一步的迭代點,至關於最速降低法中的步長爲1。將上述公式轉換爲:
    \[\boldsymbol { x } ^ { ( k + 1 ) } = \boldsymbol { x } ^ { ( k ) } - \left[ \nabla ^ { 2 } f \left( \boldsymbol { x } ^ { ( k ) } \right) \right] ^ { - 1 } \nabla f \left( \boldsymbol { x } ^ { ( k ) } \right)\]
    • 該公式能夠進行計算的前提是海塞矩陣是正定。
  • 牛頓法的算法流程圖以下所示:
  • 牛頓法的優勢
    • 牛頓法的收斂速度爲二階,屬於平方收斂。牛頓法對正定二次函數一步迭代便可達到最優解,所以具備二次終結性。
  • 牛頓法的缺點
    • 牛頓法是局部收斂的,在初始點選擇不當時,每每致使不收斂。
    • 牛頓法不是降低算法,當二階海塞矩陣非正定時,不能保證產生的方向是降低方向。
    • 二階海塞矩陣必須可逆。
    • 要求函數二階連續可微,計算量大。

5. 約束最優化方法

  • 約束最優化問題是實踐中常見的問題,難度大於無約束最優化問題。約束最優化問題的形式通常是\((fgh)\)問題,即:
    \[( fgh ) \left\{ \begin{array} { c } { \operatorname { min } f(x)} \\ { s.t. \quad g ( x ) \leq 0 } \\ {\quad \quad h ( x ) = 0 } \end{array} \right.\]

5.1 Kuhn-Tucker條件

  • 對於\((fgh)\)問題,K-T條件的公式以下:

\[\nabla f \left( x ^ { * } \right) + \sum _ { i \in I } u _ { i } ^ { * } \nabla g _ { i } \left( x ^ { * } \right) + \sum _ { j = 1 } ^ { l } v _ { j } ^ { * } \nabla h _ { j } \left( x ^ { * } \right) = 0\]算法

  • 要求全部的\(u\)值非負。
  • 經過對上述公式求解,便找到了知足K-T條件的K-T點。函數

  • 在約束最優化問題中,K-T條件至關於無約束最優化問題中的駐點條件,即尋找到K-T點便找到了問題的局部最優解。
    • 有些問題須要說明K-T點是全局最優解,只須要證實問題是凸規劃便可,詳見2.3章節的介紹。

5.2 罰函數法(外點法)

  • 解決玉樹問題的一個直接想法是,把違背約束做爲對求最小值的一種懲罰,把約束加入到目標函數,從而獲得了一個輔助的無約束最優化問題,以後採用無約束最優化方法進行求解,這就是罰函數的基本思想。
    • 在實際求解無約束最優化問題時,求駐點即可以解決大多數問題。
  • 構造的輔助函數形式以下:
    \[minf(x)+\mu \alpha (x)\]
    • \(\mu\)爲罰因子,大於0。
    • 其中\(\alpha ( x ) = \sum _ { i = 1 } ^ { m } \phi \left( g _ { i } ( x ) \right) + \sum _ { j = 1 } ^ { 1 } \varphi \left( h _ { j } ( x ) \right)\)
  • 一般令\(\phi(x)=[max{0,x}]^p\), \(\varphi (x)=|x|^p\), \(p\)值一般爲\(2\)優化

  • 求解過程就是對輔助函數求駐點,並計算\(\mu\)趨近無窮大時,最優解的值。spa

5.3 閘函數法(內點法)

  • 閘函數適用於不等式約束問題,即\((fg)\)問題。思想與罰函數基本相同。不一樣點在於該方法將懲罰家在約束集的邊界,當靠近邊界時,懲罰項無窮大。
  • 構造的輔助函數形式以下:
    \[minf(x)+\mu B(x)\]
    • \(\mu\)爲罰因子,大於0。
    • 其中\(B ( x ) = \sum _ { i = 1 } ^ { m } \phi \left( g _ { i } ( x ) \right)\)
  • 一般令\(\phi(x)= - \frac { 1 } { x }\)
  • 求解過程就是對輔助函數求駐點,並計算\(\mu\)趨近\(0^+\)時,最優解的值。
相關文章
相關標籤/搜索