最优控制理论 六、拉格朗日乘子法和KKT条件

最优控制是建立在最优化基础上的,它所处理的是无穷维路径函数的泛函极值问题,而后者是处理的对有限个参数所构成的函数的优化问题。也就是说,最优化处理的是 min ⁡ x L ( x ) , x ∈ R n \min_{\mathbf x}L(\mathbf x),\mathbf x\in\Reals^n minxL(x),xRn;而最优控制处理的是 min ⁡ x ( t ) L ( x ( t ) ) , x ( t ) ∈ R n \min_{\mathbf x(t)}L(\mathbf x(t)),\mathbf x(t)\in\Reals^n minx(t)L(x(t)),x(t)Rn的问题,其中 t t t为独立变量, x \mathbf x x都是被优化的变量。

对于最优控制问题而言,在处理等式约束条件时,采用的协态变量实际上就是时变的Lagrange乘子。具体而言,在变分法章节讲述终端约束 ψ ( x ( t f ) , t f ) = 0 \psi(x(t_f),t_f)=0 ψ(x(tf),tf)=0时,直接引入了Lagrange乘数 μ ∈ R m \mu\in\Reals^m μRm;同样在处理路径等式约束 f ( x ( t ) , x ˙ ( t ) , t ) = 0 f(x(t),\dot x(t),t)=0 f(x(t),x˙(t),t)=0时,在Hamilton函数中引入了Lagrange乘子 λ ( t ) ∈ R n \lambda(t)\in\Reals^n λ(t)Rn。事实上,在最优化问题 min ⁡ x L ( x ) , s . t . g ( x ) = 0 \min_{\mathbf x}L(\mathbf x),s.t. g(\mathbf x)=0 minxL(x),s.t.g(x)=0 时,这种方法也是类似的。

本篇博客从等式约束最优化开始,进一步解释不等式约束最优化问题的必要条件,即KKT条件。

1. 等式约束最优化

下面举一个例子来说明拉格朗日乘子法在最优化问题中的应用:

例1:等式约束凸二次规划
min ⁡ x ∈ R n 1 2 x T P x + q T x , s . t . A x = b \min_{x\in\Reals^n}\frac 1 2x^\mathrm TPx+q^\mathrm Tx,\quad s.t.Ax=b xRnmin21xTPx+qTx,s.t.Ax=b

其中 b ∈ R m , A ∈ R n ∗ m , r a n k ( A ) = m , m ≤ n b\in\Reals^m,A\in\Reals^{n*m},rank(A)=m,m\leq n bRm,ARnm,rank(A)=m,mn。同样引入Lagrange乘子 λ ∈ R m \lambda\in\Reals^m λRm,构建Hamilton函数
H ( x , λ ) = 1 2 x T P x + q T x + λ T ( A x − b ) H(x,\lambda)=\frac 1 2x^\mathrm TPx+q^\mathrm Tx+\lambda^\mathrm T(Ax-b) H(x,λ)=21xTPx+qTx+λT(Axb)

于是,等式约束优化问题转化为对无约束Hamilton函数的优化问题。最优解 x ∗ x^* x和乘数 λ ∗ \lambda^* λ服从一阶必要条件
∂ H ∂ x ∗ = P x ∗ + q + A λ ∗ = 0 ∂ H ∂ λ ∗ = A x ∗ − b = 0 \frac{\partial H}{\partial x^*}=Px^*+q+A\lambda^*=0\\ \frac{\partial H}{\partial \lambda^*}=Ax^*-b=0 xH=Px+q+Aλ=0λH=Axb=0

该问题构成 m + n m+n m+n维的线性方程组,若矩阵不奇异,则可以求出最优解。该问题的数值求解方法可见 zealscott-等式约束优化,不会的可以直接调用MATLAB函数 f m i n c o n \tt fmincon fmincon.

利用**Lagrange乘子法,可以把等式约束问题转化为无约束问题,**这个无约束问题求解Hamilton函数的极值。下面我们再来了解一下Lagrange乘子的物理意义。问题 知乎-如何理解拉格朗日乘子法?从各个角度都进行了回答,我在这里简单摘取别人的话。

  • 从平面几何角度。极值点处,函数等势面 f ( x ) = c f(x)=\text c f(x)=c和等式约束 g ( x ) = 0 g(x)=0 g(x)=0的切线相切,也就是说两个梯度 ∇ f ( x ) , ∇ g ( x ) \nabla f(x),\nabla g(x) f(x),g(x)共线,而这个梯度前面的系数是Lagrange乘数 λ \lambda λ。梯度共线,意味着每个方向 x i x_i xi上都有偏导数成比例,即
    ∂ f ∂ x i = − λ i ∂ g ∂ x i \frac{\partial f}{\partial x_i}=-\lambda_i\frac{\partial g}{\partial x_i} xif=λixig

    那么写成向量形式就是 ∇ f ( x ) + λ T ∇ g ( x ) = 0 \nabla f(x)+\lambda^\mathrm T\nabla g(x)=0 f(x)+λTg(x)=0

  • 从代数角度。我们所定义的多元标量函数 H ( x , λ ) = f ( x ) + λ T g ( x ) H(x,\lambda)=f(x)+\lambda^\mathrm Tg(x) H(x,λ)=f(x)+λTg(x),是一个无约束优化问题,它在极值点的必要条件就是,对自变量 λ , x \lambda,x λ,x的梯度都为0。即
    ∂ H ∂ x = ∇ f + λ T ∇ g = 0 ∂ H ∂ λ = g ( x ) = 0 \frac{\partial H}{\partial x}=\nabla f+\lambda^\mathrm T\nabla g=0\\ \frac{\partial H}{\partial \lambda}=g(x)=0 xH=f+λTg=0λH=g(x)=0

    第一个式子是必要条件,第二个式子是等式约束,这两个同时满足才行。

  • 从函数构造方面来说,如果等式约束自然满足 g ( x ) = 0 g(x)=0 g(x)=0,那显然哈密尔顿函数的第二项就没有了,即 H ( x , λ ) = f ( x ) H(x,\lambda)=f(x) H(x,λ)=f(x)。从这个意义上来说,所构造Hamilton函数和原问题是等价的。

2. 不等式约束最优化

上面讲述了等式约束最优化的处理方法,采用Lagrange乘子法把约束问题转化为无约束问题。下面我们来讨论不等式约束最优化问题,不同之处在于不等式约束是否active是需要分类讨论的。

2.1 1个不等式约束

为简单起见,首先考虑一个不等式的情况,例如 g ( x ) = − x + c ≤ 0 g(x)=-x+c\leq0 g(x)=x+c0
min ⁡ x f ( x ) , s . t . g ( x ) ≤ 0 \min_xf(x),\quad s.t.g(x)\leq 0 xminf(x),s.t.g(x)0

不等式约束的处理方法要从不等式约束有没有 起作用(active) 谈起。阴影部分为与不等式冲突的区域,即 g ( x ) > 0 g(x)>0 g(x)>0,下图反映了不等式与极小值之间的两种情况

x ∗ x^* x不在不等式边界上,图1 x ∗ x^* x在不等式边界上,图2
[1dim constrained Nolinear Programming, in Region]1dim constrained Nolinear Programming, boundary
g ( x ∗ ) < 0 , μ = 0 g(x^*)<0,\mu=0 g(x)<0,μ=0 g ( x ∗ ) = 0 , μ > 0 g(x^*)=0,\mu>0 g(x)=0,μ>0

图1,最小值本来就在 g ( x ∗ ) < 0 g(x^*)<0 g(x)<0的部分取得;图2,由于受到不等式的约束,函数极小值只能在边界处取得,此时, g ( x ∗ ) = 0 g(x^*)=0 g(x)=0。如果引入松弛变量 μ ∈ R \mu\in\Reals μR,把不等式约束暂且用等式约束的方法来处理,构建如下形式的Hamilton函数, H ( x , μ ) = f ( x ) + μ g ( x ) H(x,\mu)=f(x)+\mu g(x) H(x,μ)=f(x)+μg(x)。函数取得极值的一阶必要条件为
∂ H ∂ x = ∇ f ( x ∗ ) + μ ∇ g ( x ∗ ) = 0 g ( x ∗ ) ≤ 0 μ { = 0 , g ( x ∗ ) < 0 (本来就满足,约束条件不影响结果) > 0 , g ( x ∗ ) = 0 (限制了最小值的取得) \begin{aligned} &\frac{\partial H}{\partial x}=\nabla f(x^*)+\mu \nabla g(x^*)=0\\ &g(x^*)\leq 0\\ &\mu\begin{cases} =0, &g(x^*)<0&\text{(本来就满足,约束条件不影响结果)}\\ \gt0, &g(x^*)=0&\text{(限制了最小值的取得)} \end{cases} \end{aligned} xH=f(x)+μg(x)=0g(x)0μ{=0,>0,g(x)<0g(x)=0(本来就满足,约束条件不影响结果)(限制了最小值的取得)

上式 ∇ ( ⋅ ) = ∂ ( ⋅ ) ∂ x \nabla (\cdot)=\frac{\partial(\cdot)}{\partial x} ()=x(),把两种情况写作一个条件,即
{ μ ≥ 0 μ ⋅ g ( x ∗ ) = 0 \left\{\begin{matrix} \mu\geq 0\\ \mu\cdot g(x^*)=0 \end{matrix}\right. {μ0μg(x)=0

下面解释为什么松弛变量 μ ≥ 0 \mu\geq 0 μ0而不能小于0. 我们引入松弛变量 μ \mu μ的目的是,使新的问题和原始问题等价,只有这样才能保证等价。大于号和等于号对应了不等式约束对优化问题的限制行为,这个由图1和图2就可以明显看出来。当 μ = 0 \mu=0 μ=0时,不等式约束是可有可无的,没有它求出的极小值和原来的一样。当 μ > 0 \mu>0 μ>0时,和约束冲突的解 ∀ x , g ( x ) > 0 \forall x,g(x)>0 x,g(x)>0必然使得 H ( x , μ ) = f ( x ) + μ g ( x ) > f ( x ) H(x,\mu)=f(x)+\mu g(x)>f(x) H(x,μ)=f(x)+μg(x)>f(x),这也就避免了它取这个点。从一阶必要条件来看,如果极小值就恰好在不等式的边界取得,此时, ∇ f ( x ) > 0 ( → ) , ∇ g ( x ) < 0 ( ← ) \nabla f(x)>0(\rightarrow),\nabla g(x)<0(\leftarrow) f(x)>0(),g(x)<0(),要使两者达到平衡的系数是 μ > 0 \mu>0 μ>0,这样 ∇ f ( x ∗ ) + μ ∇ g ( x ∗ ) = 0 \nabla f(x^*)+\mu \nabla g(x^*)=0 f(x)+μg(x)=0.

2.2 KKT条件

2.1节函数极小值的必要条件即为KKT条件,Karush–Kuhn–Tucker conditions。参考doubleslow- KKT条件详解这篇文章,以下直接给出KKT条件。设不等式+等式约束的非线性最优化问题如下
min ⁡ x f ( x ) , s . t . h ( x ) = 0 g ( x ) ≤ 0 \min_\mathbf x f(\mathbf x),\quad s.t.\begin{aligned} \mathbf h(\mathbf x)=0\\ \mathbf g(\mathbf x)\leq0 \end{aligned} xminf(x),s.t.h(x)=0g(x)0

其中 x ∈ R n \mathbf x\in\Reals^n xRn为多元向量, f ( x ) f(x) f(x)为标量函数, h ∈ R p , g ∈ R q \mathbf h\in\Reals^p,\mathbf g\in\Reals^q hRp,gRq为多元向量函数,对该问题引入Lagrange乘子 λ ∈ R p \lambda\in\Reals^p λRp,松弛变量 μ ∈ R q \mu\in\Reals^q μRq. 构建Hamilton函数
H ( x , λ , μ ) = f ( x ) + λ T h ( x ) + μ T g ( x ) H(x,\lambda,\mu)=f(x)+\lambda^\mathrm T h(x)+\mu^\mathrm Tg(x) H(x,λ,μ)=f(x)+λTh(x)+μTg(x)

该问题的KKT条件为
{ ∇ H = 0 ( 一 阶 必 要 条 件 ) h ( x ∗ ) = 0 , g ( x ) ≤ 0 ( 原 始 约 束 ) λ i ≠ 0 ( 等 式 约 束 始 终 起 作 用 ) μ j g j ( x ∗ ) = 0 ( 互 补 松 弛 性 ) μ j ≥ 0 ( 松 弛 变 量 非 负 ) \left\{\begin{matrix} \nabla H=0& (一阶必要条件)\\ \mathbf h(\mathbf x^*)=0, \mathbf g(\mathbf x)\leq0 &(原始约束)\\ \lambda_i\neq0&(等式约束始终起作用)\\ \mu_jg_j(\mathbf x^*)=0&(互补松弛性)\\ \mu_j\geq0&(松弛变量非负) \end{matrix}\right. H=0h(x)=0,g(x)0λi=0μjgj(x)=0μj0()()()()()
上式 ∇ ( ⋅ ) = ∂ ( ⋅ ) ∂ x ∈ R n , i = 1 , 2 , ⋯   , p , j = 1 , 2 , ⋯   , q \nabla (\cdot)=\frac{\partial(\cdot)}{\partial x}\in\Reals^n,i=1,2,\cdots,p, j=1,2,\cdots,q ()=x()Rni=1,2,,p,j=1,2,,q.

2.3 二维不等式约束图解

下面是一个不等式约束的非线性规划问题,
min ⁡ x , y f ( x , y ) = x exp ⁡ [ − ( x 2 + y 2 ) ] + ( x 2 + y 2 ) / 20 s . t . g ( x , y ) = x y / 2 + ( x + 2 ) 2 + ( y − 2 ) 2 / 2 − c ≤ 0 \min_{x,y}f(x,y)=x \exp[-(x^2+y^2)]+(x^2+y^2)/20\\ s.t.g(x,y)=xy/2+(x+2)^2+(y-2)^2/2-c\leq0 x,yminf(x,y)=xexp[(x2+y2)]+(x2+y2)/20s.t.g(x,y)=xy/2+(x+2)2+(y2)2/2c0

同样用梯度法来解释,有下面的二维图形,红色弧线内部是不等式满足的区域,即 g ( x ) < 0 g(x)<0 g(x)<0。图3的极小值点是无约束问题本来的极小值点。在这一点 x ∗ x^* x,不等式约束不起作用,要使得 H ( x , y , μ 1 , μ 2 ) = f ( x , y ) H(x,y,\mu_1,\mu_2)=f(x,y) H(x,y,μ1,μ2)=f(x,y),所以 μ j = 0 \mu_j=0 μj=0。图4中,极小值是在不等式边界上取得的。在这一点 x ∗ x^* x,梯度沿 x , y x,y x,y方向互相成比例,即 ∇ x f ( x ∗ ) + μ 1 ∇ x g ( x ∗ ) = 0 , ∇ y f ( x ∗ ) + μ 2 ∇ y g ( x ∗ ) = 0 \nabla_x f(x^*)+\mu_1 \nabla_x g(x^*)=0,\nabla_y f(x^*)+\mu_2 \nabla_y g(x^*)=0 xf(x)+μ1xg(x)=0,yf(x)+μ2yg(x)=0 ,由于梯度是反向的,所以 μ j > 0 \mu_j>0 μj>0.

c = 5 , x ∗ c=5,x^* c=5,x不在不等式边界上,图3 c = 2 , x ∗ c=2,x^* c=2,x在不等式边界上,图4
2dim constrained Nolinear Programming, in region2dim constrained Nolinear Programming, boundary
g ( x ∗ ) < 0 , μ = 0 g(x^*)<0,\mu=0 g(x)<0,μ=0 g ( x ∗ ) = 0 , μ > 0 g(x^*)=0,\mu>0 g(x)=0,μ>0

实际上和下面这篇文章的表达方式一样,知乎-图解KKT条件和拉格朗日乘子法 ,绘图解释了二维函数+线性不等式约束KKT条件。

3. MATLAB不等式约束优化

很多形式规范的约束最优化问题都可以直接调用MATLAB中现有的优化函数,下面是各类情形常用来的求解算法:
MATLAB_funs1MATLAB_funs2
需要注意的是,并不是所有优化问题都可以用这些算法,(比如一些有很多局部最优解的问题就只能用智能优化算法),以上表格中列举的算法求解对应形式的问题效率非常高,而采用智能算法的效率就不一定更高。

总结

一言以蔽之,等式约束的最优性条件就是说被优化函数的梯度,等于多个等式约束函数梯度的线性组合,由于等式约束是互相线性无关的,所以等式约束的函数梯度的线性组合系数就是拉格朗日乘子。

不等式约束的自由训条件是说被优化函数的梯度,等于多个等式约束以及起作用的(active)不等式约束的梯度的线性组合,然后这个组合系数的就是每个等式的线性

4. 参考文献

[1] Bryson A E , Ho Y C ,Applied optimal control : optimization, estimation, and control Sec 1.1~Sec 1.7 [J]. IEEE Transactions on Systems Man & Cybernetics, 1975
[2]. 见文中的链接。
[3]. 桂。cnblogs 最优化:拉格朗日乘子法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值