內點法


文字理解

內點法屬於約束優化算法。約束優化算法的基本思想是:通過引入效用函數的方法將約束優化問題轉換成無約束問題,再利用優化迭代過程不斷地更新效用函數,以使得算法收斂。
內點法(罰函數法的一種)的主要思想是:在可行域的邊界築起一道很高的“圍牆”,當迭代點靠近邊界時,目標函數徒然增大,以示懲罰,阻止迭代點穿越邊界,這樣就可以將最優解“檔”在可行域之內了。

數學定義

對於下面的不等式約束的優化問題:

\[\min f(x), x \in R^n \]

\[s.t \quad g_{i}(x) \leq0, i=1,2,...,m \]

利用內點法進行求解時,構造懲罰函數的一般表達式為

\[\varphi (X, r)=f(X)-r\sum_{i=1}^{m}\frac{1}{g_{i}(X)} \]

或者

\[\varphi (X, r)=f(X)-r\sum_{i=1}^{m}{\ln[-g_{i}(X)]} \]

算法步驟

  1. 取初始懲罰因子\(r^{(0)}>0\),允許誤差\(\epsilon>0\)
  2. 在可行域\(D\)內選取初始點\(X^{(0)}\),令\(k=1\)
  3. 構造懲罰函數\(\varphi (X, r^{(k)})\),從\(X^{(k-1)}\)點出發用無約束優化方法求懲罰函數\(\varphi (X, r^{(k)})\)的極值點\((X^{*}, r^{(k)})\)
  4. 檢查迭代終止准則:如果滿足$$|X^{} r^{(k)}-X^{} r^{(k-1)}|\leq\epsilon_{1}=10^{-5}-10^{-7}$$或者$$|\frac{\varphi (X^{} ,r^{(k)})-\varphi (X^{}, r^{(k-1)})}{\varphi (X^{*}, r^{(k-1)})}|\leq\epsilon_{2}=10^{-3}-10^{-4}$$則停止迭代計算,並以\((X^{*}, r^{(k)})\)作為原目標函數\(f(X)\)的約束最優解,否則轉入下一步;
  5. \(r^{(k+1)}=cr^{(k)}\)\(X^{(0)}=X^{*}r^{(k)}\)\(k=k+1\),轉向步驟3。遞減系數\(c=0.1-0.5\),通常取0.1。

內點懲罰函數法特點及其應用

  • 懲罰函數定義於可行域內,序列迭代點在可行域內不斷趨於約束邊界上的最優點(這就是稱為內點法的原因)
  • 只適合求解具有不等式約束的優化問題

內點法求解案例

用內點法求下面約束優化問題的最優解,取迭代初始\(X^0 = [0, 0]^{\mathrm{T}}\),懲罰因子的初始值\(r^0 = 1\),收斂終止條件\(\|X^k - X^{k-1}\| \leq \varepsilon\)\(\varepsilon = 0.01\)

\[\min f(X) = x_1^2 + x_1^2 - x_1x_2 - 10x_1 - 4x_2 + 60 \]

\[\mathrm{s.t.}\; g(X) = x_1 + x_2 -8 \leq 0 \]

  1. 構造內懲罰函數:\(\varphi(X, r) = x_1^2 + x_1^2 - x_1x_2 - 10x_1 - 4x_2 + 60 -r\ln(x_1 + x_2 -8)\)
  2. 用解析法求內懲罰函數的極小值

\[\nabla\varphi(X, r) = [2x_1 - x_2 - 10 - \frac{r}{x_1 + x_2 - 8} \quad 2x_2 - x_1 - 4 - \frac{r}{x_1 + x_2 - 8}] \]

\(\nabla \varphi(X, r) = 0\)得:\(\begin{align}2x_1 - x_2 - 10 - \frac{r}{x_1 + x_2 - 8} = 0 \\ 2x_2 - x_1 - 4 - \frac{r}{x_1 + x_2 - 8} = 0\end{align}\)

解得:

\(X^*_1(r) = \begin{bmatrix}\frac{13 + \sqrt{9+2r}}{2} & \frac{9 + \sqrt{9+2r}}{2}\end{bmatrix}^{\mathrm{T}}\)

\(X^*_2(r) = \begin{bmatrix}\frac{13 - \sqrt{9+2r}}{2} & \frac{9 - \sqrt{9+2r}}{2}\end{bmatrix}^{\mathrm{T}}\)

\(\because g(X^*_1(r)) > 0\)

\(\therefore\) 舍去\(X^*_1(r)\)

\(\because \varphi(X, r)\)為凸函數

\(\therefore\) 無約束優化問題的最優解為\(X^*(r) = X^*_2(r) = \begin{bmatrix}\frac{13 - \sqrt{9+2r}}{2} & \frac{9 - \sqrt{9+2r}}{2}\end{bmatrix}^{\mathrm{T}}\)

  1. 求最優解

\(r^0 = 1\)時,\(X^*(r^0) = \begin{pmatrix}4.8417 & 2.8417\end{pmatrix}^{\mathrm{T}}\)\(\|X^*(r^0) - X^0\| = 5.6140 > \varepsilon\)

\(r^1 = 0.1\)時,\(X^*(r^1) = \begin{pmatrix}4.9834 & 2.9834\end{pmatrix}^{\mathrm{T}}\)\(\|X^*(r^1) - X^*(r^0)\| = 0.2004 > \varepsilon\)

\(r^2 = 0.01\)時,\(X^*(r^2) = \begin{pmatrix}4.9983 & 2.9983\end{pmatrix}^{\mathrm{T}}\)\(\|X^*(r^2) - X^*(r^1)\| = 0.0211 > \varepsilon\)

\(r^3 = 0.01\)時,\(X^*(r^3) = \begin{pmatrix}4.9998 & 2.9998\end{pmatrix}^{\mathrm{T}}\)\(\|X^*(r^3) - X^*(r^2)\| = 0.0021 < \varepsilon\)

\(X^*(r^3)\)為最優解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM