1 拉格朗日乘子法的数学背景
当使用前面介绍的罚函数法求解约束问题时,为获得足够好的近似解,罚参数需取足够大的值,这将导致增广目标函数的黑森矩阵出现病态,从而导致数值计算上的困难。因此提出拉格朗日乘子法。
学高数的时候我们就学过等式约束条件下的拉格朗日乘子法。延续前一节中对约束最优化问题的定义,则拉格朗日函数为 L ( x , μ ) = f ( x ) − ∑ j ∈ E μ j h j ( x ) L(x,\mu)=f(x)-\displaystyle\sum_{j\in E}\mu_jh_j(x) L(x,μ)=f(x)−j∈E∑μjhj(x)。局部最优解的条件是对x求梯度及对所有 μ \mu μ求导均为0。
下面来讨论不等式和等式同时约束条件下的拉格朗日乘子法。拉格朗日函数为 L ( x , μ ) = f ( x ) − ∑ i ∈ I λ i g i ( x ) − ∑ j ∈ E μ j h j ( x ) L(x,\mu)=f(x)-\displaystyle\sum_{i\in I}\lambda_ig_i(x)-\displaystyle\sum_{j\in E}\mu_jh_j(x) L(x,μ)=f(x)−i∈I∑λigi(x)−j∈E∑μjhj(x)。对 λ \lambda λ的情况需要讨论:
- 最优解在 D D D内部时, g ( x ∗ ) > 0 g(x^*)>0 g(x∗)>0,约束条件无效,有 λ i ∗ = 0 , i ∈ I \lambda^*_i=0,i\in I λi∗=0,i∈I
- 最优解在 D D D边界上时, g ( x ∗ ) = 0 g(x^*)=0 g(x∗)=0,约束条件有效。此时对x求梯度设为0,有 ∇ f ( x ∗ ) = ∑ i ∈ I λ i ∗ ∇ g i ( x ∗ ) + ∑ j ∈ E μ j ∗ ∇ h i ( x ∗ ) \nabla f(x^*)=\displaystyle\sum_{i\in I}\lambda_i^*\nabla g_i(x^*)+\sum_{j\in E}\mu^*_j\nabla h_i(x^*) ∇f(x∗)=i∈I∑λi∗∇gi(x∗)+j∈E∑μj∗∇hi(x∗), ∇ f ( x ∗ ) \nabla f(x^*) ∇f(x∗)指向 D D D内部(因为边界处是最优解), ∇ g i ( x ∗ ) \nabla g_i(x^*) ∇gi(x∗)也指向 D D D内部(因为边界处为0, D D D内大于0),所以 λ i ∗ > 0 , i ∈ I \lambda^*_i>0,i\in I λi∗>0,i∈I
可见,无论最优解在何处,都有 λ i ∗ g i ( x ∗ ) = 0 , i ∈ I \lambda_i^*g_i(x^*)=0,i\in I λi∗gi(x∗)=0,i∈I,这个条件被称为互补松弛条件。
因此针对不等式和等式同时约束条件下的拉格朗日乘子法,局部最优解的条件可以用如下的KKT条件表示:
{ ∇ x L ( x ∗ , λ ∗ , μ ∗ ) = ∇ f ( x ∗ ) − ∑ i ∈ I λ i ∗ ∇ g i ( x ∗ ) − ∑ j ∈ E μ j ∗ ∇ h j ( x ∗ ) = 0 h j ( x ∗ ) = 0 , j ∈ E g i ( x ∗ ) ≥ 0 , λ i ∗ ≥ 0 , λ i ∗ g i ( x ∗ ) = 0 , i ∈ I \begin{cases}\nabla_xL(x^*,\lambda^*,\mu^*)=\nabla f(x^*)-\displaystyle\sum_{i\in I}\lambda_i^*\nabla g_i(x^*)-\sum_{j\in E}\mu_j^*\nabla h_j(x^*)=0\\h_j(x^*)=0,j\in E\\g_i(x^*)\geq0,\lambda_i^*\geq0,\lambda_i^*g_i(x^*)=0,i\in I\end{cases} ⎩ ⎨ ⎧∇xL(x∗,λ∗,μ∗)=∇f(x∗)−i∈I∑λi∗∇gi(x∗)−j∈E∑μj∗∇hj(x∗)=0hj(x∗)=0,j∈Egi(x∗)≥0,λi∗≥0,λi∗gi(x∗)=0,i∈I
满足KKT条件的点被称为KKT点。
2 拉格朗日乘子法的构成
2.1 等式约束问题的乘子法
将外点罚函数法的思想引入拉格朗日函数的最优化问题。设 S ( x ) = ∑ i ∈ E h i 2 ( x ) S(x)=\displaystyle\sum_{i\in E}h_i^2(x) S(x)=i∈E∑hi2(x),构造辅助函数 L μ ( x , λ ) = L ( x , λ ) + 1 2 μ S ( x ) = f ( x ) − ∑ i ∈ E λ i h i ( x ) + 1 2 μ ∑ i ∈ E h i 2 ( x ) L_\mu(x,\lambda)=L(x,\lambda)+\frac{1}{2}\mu S(x)=f(x)-\displaystyle\sum_{i\in E}\lambda_ih_i(x)+\frac{1}{2}\mu\sum_{i\in E}h_i^2(x) Lμ(x,λ)=L(x,λ)+21μS(x)=f(x)−i∈E∑λihi(x)+2

本文深入探讨了拉格朗日乘子法在约束优化问题中的应用,包括等式与不等式约束条件下的理论分析,以及其实战测试结果。通过详细解释拉格朗日函数、KKT条件和乘子法的构成,辅以具体实例,展示了算法的迭代过程和最终求解结果。
1537

被折叠的 条评论
为什么被折叠?



