本篇主要目的: 解决含有等式、不等式约束的优化问题。
主要方法: 将目标函数进行转换,将原问题转换为无约束最优化问题。
证明部分: 见《凸优化》或《非线性规划》,这里不抄一遍了。
最优化以下问题:
min f ( x ) subject to h ( x ) = [ h 1 ( x ) ⋮ h m ( x ) ] = 0 \begin{aligned} \min & && f(x)\\ \text{subject to} & && h(x) =\left[\begin{matrix}h_1(x)\\\vdots\\h_m(x)\end{matrix}\right]= 0 \end{aligned} minsubject tof(x)h(x)=⎣⎢⎡h1(x)⋮hm(x)⎦⎥⎤=0
其中, h ( x ) h(x) h(x) 连续可导。
则 x ∗ x^* x∗ 为最优解的必要条件为:存在正向量 λ \lambda λ ,使得:
∇ f ( x ∗ ) + ∑ i λ i ∇ h i ( x ∗ ) = 0 \nabla f(x^*) + \sum_{i}\lambda_i\nabla h_i(x^*)=0 ∇f(x∗)+i∑λi∇hi(x∗)=0
理解形式:
目标函数的梯度 ∇ f ( x ∗ ) \nabla f(x^*) ∇f(x∗) 属于约束函数的梯度 ∇ h ( x ) \nabla h(x) ∇h(x) 在 x ∗ x^* x∗ 处长成的子空间:也即目标函数梯度可以由约束函数的梯度线性表出。
∇ f ( x ∗ ) = − ∑ i λ i ∇ h i ( x ∗ ) \nabla f(x^*) =- \sum_{i}\lambda_i\nabla h_i(x^*) ∇f(x∗)=−i∑λi∇hi(x∗)
目标函数的 ∇ f ( x ∗ ) ⊥ V ( x ∗ ) \nabla f(x^*)\perp V(x^*) ∇f(x∗)⊥V(x∗) 其中 V ( x ∗ ) V(x^*) V(x∗) 为一阶可行变分子空间:
V ( x ∗ ) = { Δ x ∣ ∇ h i ( x ∗ ) T Δ x = 0 } V(x^*)=\left\{\Delta x\right\vert \nabla h_i(x^*)^T\Delta x=0\} V(x∗)={Δx∣∇hi(x∗)TΔx=0}
进一步地,满足二阶导正定条件 ∀ d ∈ V ( x ∗ ) \forall d \in V(x^*) ∀d∈V(x∗) :
d T ( ∇ 2 f ( x ∗ ) + ∑ i λ i ∇ 2 h i ( x ∗ ) ) ) d ≥ 0 d^T\left(\nabla^2 f(x^*)+\sum_{i}\lambda_i \nabla^2 h_i(x^*))\right)d\ge 0 dT(∇2f(x∗)+i∑λi∇2hi(x∗)))d≥0
定义 L : R m + n ↦ R L:\R^{m+n}\mapsto\R L:Rm+n↦R:
L ( x , λ ) = f ( x ) + ∑ i = 1 m λ i h i ( x ) L(x,\lambda)=f(x)+\sum_{i=1}^m \lambda_i h_i(x) L(x,λ)=f(x)+i=1∑mλihi(x)
则原问题的约束转化为如下条件:
{ ∂ L ( x ∗ , λ ∗ ) ∂ x ∗ = 0 ⇒ ∇ f ( x ) + ∑ λ i ∇ h i ( x ) = 0 ∂ L ( x ∗ , λ ∗ ) ∂ λ ∗ = 0 ⇒ h ( x ) = 0 y T ∂ 2 L ( x ∗ , λ ∗ ) ∂ x ∗ ∂ x ∗ y ≥ 0 , ∀ y ∈ V ( x ∗ ) \begin{cases} \begin{aligned} \frac {\partial L(x^*,\lambda^*)}{\partial x^*}&=0&&\Rightarrow\nabla f(x)+\sum\lambda_i\nabla h_i(x)=0\\ \frac {\partial L(x^*,\lambda^*)}{\partial \lambda^*}&=0&&\Rightarrow h(x)=0\\ y^T\frac{\partial^2 L(x^*,\lambda^*)}{\partial x^*\partial x^*}y&\ge 0&&,\forall y\in V(x^*) \end{aligned} \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∂x∗∂L(x∗,λ∗)∂λ∗∂L(x∗,λ∗)yT∂x∗∂x∗∂2L(x∗,λ∗)y=0=0≥0⇒∇f(x)+∑λi∇hi(x)=0⇒h(x)=0,∀y∈V(x∗)
通过求解如上问题,可以得到原问题的局部最优解。(注:如果原问题是凸问题的话,不用考虑最有一个条件,因为凸函数的二阶导矩阵一定是正定的。)
其中,该解满足 ∃ γ > 0 , ϵ > 0 \exist \gamma>0,\epsilon>0 ∃γ>0,ϵ>0 使得 ∀ x \forall x ∀x 满足 h ( x ) = 0 h(x)=0 h(x)=0 ,且 ∥ x − x ∗ ∥ < 0 \|x-x^*\|<0 ∥x−x∗∥<0:
f ( x ) ≥ f ( x ∗ ) + γ 2 ∥ x − x ∗ ∥ 2 f(x)\ge f(x^*)+\frac{\gamma}{2}\|x-x^*\|^2 f(x)≥f(x∗)+2γ∥x−x∗∥2
这个性质在之前 凸优化 [3]:无约束最优化——一阶、二阶条件 这篇文章中证明过。其中 γ ≤ λ m i n ( ∇ 2 f ( x ) ) \gamma\le \lambda_{min}(\nabla^2f(x)) γ≤λmin(∇2f(x))
原始问题:
min f ( x ) subject to { h ( x ) = 0 g 1 ( x ) ≤ 0 ⋮ g r ( x ) ≤ 0 ⇒ { h ( x ) = 0 g ( x ) ≤ 0 \begin{aligned}\min && &f(x)\\\text{subject to} && &\begin{cases}h(x)=0\\g_1(x)\le 0\\\vdots\\g_r(x)\le 0\end{cases}\Rightarrow \begin{cases}h(x)=0\\g(x)\le 0\end{cases}\end{aligned} minsubject tof(x)⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧h(x)=0g1(x)≤0⋮gr(x)≤0⇒{h(x)=0g(x)≤0
引入一个新概念:积极约束、非积极约束。
A ( x ) = { j ∣ g j ( x ) = 0 } A(x)=\left\{j\vert g_j(x)=0\right\} A(x)={j∣gj(x)=0}
A ( x ) A(x) A(x) 表示 x x x 点处落在哪些不等式约束的边界上。
Remark 1: 也即:只考虑积极约束,并将积极约束转换为等式约束,与求解等式约束相同的方法来求解积极约束。
Remark 2: 因为积极约束是有方向性的,定义域是在 R n \R^n Rn 的子空间下的一个凸集。因此在设计算法的时候,需要考虑方向性。(因为之前没有考虑到非积极约束的符号,设计算法的时候需要保证最优解一定在凸集的内部)