本文主要是介绍拉格朗日松弛法、KKT条件与线性规划的对偶,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
拉格朗日松弛
深度解析拉格朗日乘子法,让你成为高手
对于等式约束,实际上是存在一条等值线,最优解必须存在在这条解上。
其目的是判断约束 g ( x ) g(x) g(x)的梯度方向是否和等值线的梯度方向共线。
即:
[ x 1 , x 2 , x 3 ] T = λ [ y 1 , y 2 , y 3 ] [x_1,x_2,x_3]^T=\lambda[y_1,y_2,y_3] [x1,x2,x3]T=λ[y1,y2,y3]
此时 λ \lambda λ取正负都可以。
KKT条件
KKT条件,原来如此简单 | 理论+算例实践
配合下式可以说:假设最优解出现在其中n个 g ( x ) g(x) g(x)上,那么他们可以被放到拉格朗日松弛目标函数中,其余的如果不满足约束说明假设错了,如果满足约束证明是一种可行解。
min f ( X ) s.t. g i ( X ) ≤ 0 , i = 1 , … , m h j ( X ) = 0 , j = 1 , … , n \begin{array}{ll}\min & f(X) \\\text { s.t. } & g_i(X) \leq 0, \quad i=1, \ldots, m \\& h_j(X)=0, \quad j=1, \ldots, n\end{array} min s.t. f(X)gi(X)≤0,i=1,…,mhj(X)=0,j=1,…,n
可以被转化为:
L = f ( X ) + ∑ i = 1 m λ i g i ( X ) + ∑ j = 1 n μ j h j ( X ) L=f\left(X\right)+\sum_{i=1}^m \lambda_i g_i\left(X\right)+\sum_{j=1}^n \mu_j h_j(X) L=f(X)+i=1∑mλigi(X)+j=1∑nμjhj(X)
对于任意的X,要想使L满足要求( λ i g i ( X ) = 0 \lambda_i g_i\left(X\right)=0 λigi(X)=0)。考虑到 g i ( X ) ≤ 0 g_i\left(X\right)\le0 gi(X)≤0。问题就转化为求L关于 λ \lambda λ 的最大值。
f ( x ∗ ) = min x f ( x ) = min x { max λ , μ L ( λ , μ , x ) } f\left(x^*\right)=\min _x f(x)=\min _x\left\{\max _{\lambda, \mu} L(\lambda, \mu, x)\right\} f(x∗)=xminf(x)=xmin{λ,μmaxL(λ,μ,x)}
这样,自然的可以写出KKT条件。
∇ f ( X ∗ ) + ∑ i = 1 m λ i ∇ g i ( X ∗ ) + ∑ j = 1 n μ j ∇ h j ( X ) = 0 λ i g i ( X ∗ ) = 0 , i = 1 , … , m h j ( X ∗ ) = 0 , j = 1 , … , n λ i ≥ 0 , i = 1 , … , m g i ( X ∗ ) ≤ 0 , i = 1 , … , m \begin{aligned}& \nabla f\left(X^*\right)+\sum_{i=1}^m \lambda_i \nabla g_i\left(X^*\right)+\sum_{j=1}^n \mu_j \nabla h_j(X)=0 \\& \lambda_i g_i\left(X^*\right)=0, \quad i=1, \ldots, m \\& h_j\left(X^*\right)=0, j=1, \ldots, n \\& \lambda_i \geq 0, \quad i=1, \ldots, m \\& g_i\left(X^*\right) \leq 0, \quad i=1, \ldots, m\end{aligned} ∇f(X∗)+i=1∑mλi∇gi(X∗)+j=1∑nμj∇hj(X)=0λigi(X∗)=0,i=1,…,mhj(X∗)=0,j=1,…,nλi≥0,i=1,…,mgi(X∗)≤0,i=1,…,m
若 g i ( X ∗ ) g_i(X^*) gi(X∗)等于0,说明约束张紧, λ ≠ 0 \lambda\not=0 λ=0。若 g i ( X ∗ ) g_i(X^*) gi(X∗)不等于0,说明约束不起作用(满足时), λ ≠ 0 \lambda\not=0 λ=0。
为什么 λ ≥ 0 \lambda\ge0 λ≥0呢?
g i ( X ) ≤ 0 g_i(X) \leq 0 gi(X)≤0
g i ( x ) g_i(x) gi(x)的梯度方向仍然是可行的。
求目标函数的最小值时,若目标函数的梯度方向与 g i ( x ) g_i(x) gi(x)的梯度同向, 说明目标函数仍然可以继续下降,并没有取到最优值。
因此,
∇ f ( X ∗ ) = − λ ∇ g i ( X ∗ ) \nabla f\left(X^*\right)=-\lambda\nabla g_i(X^*) ∇f(X∗)=−λ∇gi(X∗)
min x 1 2 + 2 x 2 2 − 4 x 1 − 4 x 2 s.t. x 1 + x 2 ≤ 3 x 1 + 2 x 2 ≥ 5 \begin{array}{ll}\min & x_1^2+2 x_2^2-4 x_1-4 x_2 \\\text { s.t. } & x_1+x_2 \leq 3 \\& x_1+2 x_2 \geq 5\end{array} min s.t. x12+2x22−4x1−4x2x1+x2≤3x1+2x2≥5
最小值需要整理为小于等与0的形式
min x 1 2 + 2 x 2 2 − 4 x 1 − 4 x 2 s.t. x 1 + x 2 − 3 ≤ 0 − x 1 − 2 x 2 + 5 ≤ 0 \begin{array}{ll}\min & x_1^2+2 x_2^2-4 x_1-4 x_2 \\\text { s.t. } & x_1+x_2-3 \leq 0 \\& -x_1-2 x_2+5 \leq 0\end{array} min s.t. x12+2x22−4x1−4x2x1+x2−3≤0−x1−2x2+5≤0
x 1 2 + 2 x 2 2 − 4 x 1 − 4 x 2 + λ 1 ( x 1 + x 2 + x 3 ) + λ 2 ( − x 1 − x 2 + 5 ) x_1^2+2 x_2^2-4 x_1-4 x_2+\lambda_1(x_1+x_2+x_3)+\lambda_2(-x_1-x_2+5) x12+2x22−4x1−4x2+λ1(x1+x2+x3)+λ2(−x1−x2+5)
(1)若 λ 1 = λ 2 = 0 \lambda_1=\lambda_2=0 λ1=λ2=0,求无约束极值问题:
需要检查 g i ( X ∗ ) g_i(X^*) gi(X∗)是否小于0,若满足上式成立,一种可行解。
(2)若 λ 1 = 0 , λ 2 ≠ 0 \lambda_1=0,\lambda_2 \not=0 λ1=0,λ2=0
检查 λ 2 \lambda_2 λ2是否大于0, g 1 ( X ∗ ) g_1(X^*) g1(X∗)是否小于0,都满足是一种可行解
略
线性规划的对偶
min c T x s.t. A x ≥ b x ≥ 0 \begin{gathered}\min c^T x \\\text { s.t. } A x \geq b \quad x \geq 0\end{gathered} mincTx s.t. Ax≥bx≥0
利用KKT条件进行转化:
L ( x , λ ) = c T x − λ T ( A x − b ) = λ T b + ( c T − λ T A ) x ( λ ≥ 0 ) \begin{align*} L(x, \lambda) &= c^T x - \lambda^T(Ax - b) \\ &= \lambda^T b + (c^T - \lambda^T A) x \end{align*}(\lambda\ge0) L(x,λ)=cTx−λT(Ax−b)=λTb+(cT−λTA)x(λ≥0)
这时的 L ( x , λ ) L(x, \lambda) L(x,λ)已经没有约束,若想使其有最小值,需要 ( c T − λ T A ) (c^T-\lambda^TA) (cT−λTA)每一个分量都大于等于0。( x ≥ 0 x\ge0 x≥0)
这时问题转化为如下形式:
min x L ( x , λ ) = λ T b i f c T − λ T A ≥ 0 \min_x L(x,\lambda)=\lambda^T b \quad if \quad c^T-\lambda^TA\ge 0 xminL(x,λ)=λTbifcT−λTA≥0
由于 f ( x ∗ ) = min x f ( x ) = min x { max λ , μ L ( λ , μ , x ) } f\left(x^*\right)=\min _x f(x)=\min _x\left\{\max _{\lambda, \mu} L(\lambda, \mu, x)\right\} f(x∗)=minxf(x)=minx{maxλ,μL(λ,μ,x)}
交换顺序:
f ( x ∗ ) = min x f ( x ) = max λ b T λ s.t. A T λ ≤ c λ ≥ 0 f\left(x^*\right) = \min_x f(x) = \max_{\lambda} b^T \lambda \\ \begin{align*} \text{s.t.} \quad A^T\lambda &\leq c \\ \lambda &\geq 0 \end{align*} f(x∗)=xminf(x)=λmaxbTλs.t.ATλλ≤c≥0
对偶问题的标准形式
针对上述的推导,我们进行一定的拓展:
(1)若原问题存在等式约束
KKT条件退化为拉格朗日松弛,不需要对 λ \lambda λ进行限制
(2)若原问题存在自由变量。
若想使L有界,需要对系数项 ( c T − λ T A ) (c^T-\lambda^TA) (cT−λTA)置0,不等式约束转化为等式约束。
综上,对偶问题的转化关系如下:
原问题:
min c T x s.t. g i ( X ) ≤ b i , i = 1 , … , p h j ( X ) = b j , j = p + 1 , … , m x l ≥ 0 , l = 1 , … , q x k ≷ 0 , k = q + 1 , … , n \begin{array}{ll}\min & c^Tx \\\text { s.t. } & g_i(X) \leq b_i, \quad i=1, \ldots, p \\& h_j(X)=b_j, \quad j=p+1, \ldots, m\\ &x_l \geq 0, \quad l=1, \ldots, q\\& x_k \gtrless 0, \quad k=q+1, \ldots, n\end{array} min s.t. cTxgi(X)≤bi,i=1,…,phj(X)=bj,j=p+1,…,mxl≥0,l=1,…,qxk≷0,k=q+1,…,n
对偶问题:
max b T λ s.t. λ i ≥ 0 , i = 1 , … , λ i λ j ≷ 0 , j = p + 1 , … , m c l − A l T λ ≥ 0 , l = 1 , … , q c l − A l T λ = 0 , k = q + 1 , … , n \begin{array}{ll}\max & b^T\lambda \\\text { s.t. } & \lambda_i \geq 0, \quad i=1, \ldots, \lambda_i \\& \lambda_j \gtrless0, \quad j=p+1, \ldots, m\\ &c_l-A_l^T\lambda\ge0, \quad l=1, \ldots, q\\& c_l-A_l^T\lambda=0, \quad k=q+1, \ldots, n\end{array} max s.t. bTλλi≥0,i=1,…,λiλj≷0,j=p+1,…,mcl−AlTλ≥0,l=1,…,qcl−AlTλ=0,k=q+1,…,n
这篇关于拉格朗日松弛法、KKT条件与线性规划的对偶的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!