內點法python 內點法

2021-10-11 09:31:44 字數 2345 閱讀 7619

文字理解

內點法屬於約束優化演算法。約束優化演算法的基本思想是:通過引入效用函式的方法將約束優化問題轉換成無約束問題,再利用優化迭代過程不斷地更新效用函式,以使得演算法收斂。

內點法(罰函式法的一種)的主要思想是:在可行域的邊界築起一道很高的「圍牆」,當迭代點靠近邊界時,目標函式徒然增大,以示懲罰,阻止迭代點穿越邊界,這樣就可以將最優解「檔」在可行域之內了。

數學定義

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

\[\min f(x), x \in r^n

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

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

\[\varphi (x, r)=f(x)-r\sum_^\frac(x)}

或者\[\varphi (x, r)=f(x)-r\sum_^(x)]}

演算法步驟

取初始懲罰因子\(r^>0\),允許誤差\(\epsilon>0\);

在可行域\(d\)內選取初始點\(x^\),令\(k=1\);

構造懲罰函式\(\varphi (x, r^)\),從\(x^\)點出發用無約束優化方法求懲罰函式\(\varphi (x, r^)\)的極值點\((x^, r^)\);

檢查迭代終止準則:如果滿足$$|x^{} r^-x^{} r^|\leq\epsilon_=10^-10^$$或者$$|\frac ,r^)-\varphi (x^{}, r^)}, r^)}|\leq\epsilon_=10^-10^$$則停止迭代計算,並以\((x^, r^)\)作為原目標函式\(f(x)\)的約束最優解,否則轉入下一步;

取\(r^=cr^\),\(x^=x^r^\),\(k=k+1\),轉向步驟3。遞減係數\(c=0.1-0.5\),通常取0.1。

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

懲罰函式定義於可行域內,序列迭代點在可行域內不斷趨於約束邊界上的最優點(這就是稱為內點法的原因)

只適合求解具有不等式約束的優化問題

內點法求解案例

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

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

\[\mathrm\; g(x) = x_1 + x_2 -8 \leq 0

構造內懲罰函式:\(\varphi(x, r) = x_1^2 + x_1^2 - x_1x_2 - 10x_1 - 4x_2 + 60 -r\ln(x_1 + x_2 -8)\)

用解析法求內懲罰函式的極小值

\[\nabla\varphi(x, r) = [2x_1 - x_2 - 10 - \frac \quad 2x_2 - x_1 - 4 - \frac]

令\(\nabla \varphi(x, r) = 0\)得:\(\begin2x_1 - x_2 - 10 - \frac = 0 \\ 2x_2 - x_1 - 4 - \frac = 0\end\)

解得:\(x^*_1(r) = \begin\frac} & \frac}\end^}\)

\(x^*_2(r) = \begin\frac} & \frac}\end^}\)

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

\(\therefore\) 捨去\(x^*_1(r)\)

\(\because \varphi(x, r)\)為凸函式

\(\therefore\) 無約束優化問題的最優解為\(x^*(r) = x^*_2(r) = \begin\frac} & \frac}\end^}\)

求最優解

當\(r^0 = 1\)時,\(x^*(r^0) = \begin4.8417 & 2.8417\end^}\),\(\|x^*(r^0) - x^0\| = 5.6140 > \varepsilon\)

當\(r^1 = 0.1\)時,\(x^*(r^1) = \begin4.9834 & 2.9834\end^}\),\(\|x^*(r^1) - x^*(r^0)\| = 0.2004 > \varepsilon\)

當\(r^2 = 0.01\)時,\(x^*(r^2) = \begin4.9983 & 2.9983\end^}\),\(\|x^*(r^2) - x^*(r^1)\| = 0.0211 > \varepsilon\)

當\(r^3 = 0.01\)時,\(x^*(r^3) = \begin4.9998 & 2.9998\end^}\),\(\|x^*(r^3) - x^*(r^2)\| = 0.0021 < \varepsilon\)

即\(x^*(r^3)\)為最優解

特徵點法匹配

在slam中vo的實現方法可以根據是否需要提取特徵分為兩類 基於特徵點的方法 不使用特徵點的直接方法。其中基於特徵點的vo執行穩定,對光照 動態物體不敏感。影象特徵點的提取和匹配是計算機視覺中的乙個基本問題,在視覺slam中就需要首先找到相鄰影象對應點的組合,根據這些匹配的點對計算出相機的位姿 相對...

速率法和終點法的區別 終點法 速率法 二點法

終點法 速率法二點法 終點法具有不同分子結構的物質,對光譜有選擇吸收的特性,吸收光譜的可在可見光區域也可在紫外或紅外光區 域。若利用物質對可見光譜的選擇吸收作定量分析,此時主要表現為顏色的變化,稱為比色分析法 若利用物質對紫外或 紅外光區域的選擇吸收作定量分析,稱為吸收分光光度法。比色分析法和吸收分...

頂點法向量的計算

在opengl程式設計中,三維模型頂點法向量的計算很重要,它直接影響著顯示的效果 本人接觸opengl時間不長,很長一段時間一直困惑於法向量計算的問題,後經仔細研究並找了些資料才基本實現了法向量的計算演算法,現總結如下,希望對初學者能有些幫助。大家知道,在opengl中頂點 三角形模型對光照的反射取...