【有约束优化】拉格朗日法

第一部分:等式约束下的拉格朗日乘数法(Lagrange Multiplier Method)

1. 问题设定

考虑如下的约束优化问题:
最小化/最大化f(x)受限于gi(x)=0,i=1,…,m\begin{array}{ll} \text{最小化/最大化} & f(\mathbf{x}) \\ \text{受限于} & g_i(\mathbf{x}) = 0, \quad i=1, \dots, m \end{array}最小化/最大化受限于f(x)gi(x)=0,i=1,,m
其中,x=(x1,x2,…,xn)∈Rn\mathbf{x} = (x_1, x_2, \dots, x_n) \in \mathbb{R}^nx=(x1,x2,,xn)Rn,目标函数 f:Rn→Rf: \mathbb{R}^n \to \mathbb{R}f:RnR,约束函数 gi:Rn→Rg_i: \mathbb{R}^n \to \mathbb{R}gi:RnR 均为连续可微的。

2. 几何直观(以二维为例)

想象在 R2\mathbb{R}^2R2 平面上,我们要最小化 f(x,y)f(x, y)f(x,y),同时满足约束 g(x,y)=cg(x, y) = cg(x,y)=c(或 g(x,y)−c=0g(x, y) - c = 0g(x,y)c=0)。

  • f(x,y)f(x, y)f(x,y) 的等高线(Level Sets)是 f(x,y)=kf(x, y) = kf(x,y)=k 的曲线。
  • g(x,y)=0g(x, y) = 0g(x,y)=0 是一条可行集曲线。

当可行点 x∗\mathbf{x}^*x 达到最优时,目标函数 fff 的等高线必须与约束函数 ggg 的可行集曲线在 x∗\mathbf{x}^*x 处相切。

为什么是相切?

  • 如果不相切,目标函数的等高线会穿过可行集。这意味着我们总可以在可行集上沿着一个方向移动,走到一个更高(或更低)的等高线上,从而找到一个更好的解。
  • 只有当相切时,在 x∗\mathbf{x}^*x 附近的任何微小移动,都会导致目标函数值 fff 增加(或减少),而同时仍然满足约束 g=0g=0g=0

3. 梯度与数学表达

在切点 x∗\mathbf{x}^*x 处:

  • 梯度 ∇f(x∗)\nabla f(\mathbf{x}^*)f(x) 垂直于 fff 的等高线。
  • 梯度 ∇g(x∗)\nabla g(\mathbf{x}^*)g(x) 垂直于 g=0g=0g=0 的可行集曲线。

由于在相切时,两者具有相同的切线方向,因此它们的法线方向(即它们的梯度)必须平行

这种平行关系可以表示为:
∇f(x∗)=λ∇g(x∗)\nabla f(\mathbf{x}^*) = \lambda \nabla g(\mathbf{x}^*)f(x)=λg(x)
其中 λ∈R\lambda \in \mathbb{R}λR 是一个标量,被称为拉格朗日乘数

4. 拉格朗日函数(Lagrangian Function)

我们将约束条件合并到目标函数中,构造拉格朗日函数 L(x,λ)\mathcal{L}(\mathbf{x}, \lambda)L(x,λ)
L(x,λ)=f(x)−∑i=1mλigi(x)\mathcal{L}(\mathbf{x}, \lambda) = f(\mathbf{x}) - \sum_{i=1}^m \lambda_i g_i(\mathbf{x})L(x,λ)=f(x)i=1mλigi(x)

注意: 这里的 λi\lambda_iλi 是对应于第 iii 个约束 gi(x)=0g_i(\mathbf{x})=0gi(x)=0 的拉格朗日乘数。

5. 一阶最优性条件 (First-Order Necessary Conditions)

根据微积分的知识,函数在极值点处的梯度必须为零。我们对 L\mathcal{L}L 的所有变量(x\mathbf{x}xλ\mathbf{\lambda}λ)求偏导,并令其为零,得到一个方程组:

  1. 关于 x\mathbf{x}x 的偏导 (Stationarity):
    ∇xL(x∗,λ∗)=∇f(x∗)−∑i=1mλi∗∇gi(x∗)=0\nabla_{\mathbf{x}} \mathcal{L}(\mathbf{x}^*, \mathbf{\lambda}^*) = \nabla f(\mathbf{x}^*) - \sum_{i=1}^m \lambda_i^* \nabla g_i(\mathbf{x}^*) = \mathbf{0}xL(x,λ)=f(x)i=1mλigi(x)=0
    这正是梯度的平行条件(推广到多个约束的情况)。

  2. 关于 λ\mathbf{\lambda}λ 的偏导 (Primal Feasibility):
    ∇λL(x∗,λ∗)=−g(x∗)=0⇒gi(x∗)=0,i=1,…,m\nabla_{\mathbf{\lambda}} \mathcal{L}(\mathbf{x}^*, \mathbf{\lambda}^*) = -\mathbf{g}(\mathbf{x}^*) = \mathbf{0} \quad \Rightarrow \quad g_i(\mathbf{x}^*) = 0, \quad i=1, \dots, mλL(x,λ)=g(x)=0gi(x)=0,i=1,,m
    这确保了最优解 x∗\mathbf{x}^*x 满足原始的等式约束。


第二部分:不等式约束与 KKT 条件

当约束中包含不等式时,情况变得更加复杂,我们需要引入更强大的工具:Karush-Kuhn-Tucker (KKT) 条件。KKT 条件是拉格朗日乘数法的推广,适用于非线性规划问题。

1. 问题设定

考虑一般的非线性规划问题:
最小化f(x)受限于gi(x)≤0,i=1,…,m(不等式约束)hj(x)=0,j=1,…,l(等式约束)\begin{array}{ll} \text{最小化} & f(\mathbf{x}) \\ \text{受限于} & g_i(\mathbf{x}) \le 0, \quad i=1, \dots, m \quad (\text{不等式约束}) \\ & h_j(\mathbf{x}) = 0, \quad j=1, \dots, l \quad (\text{等式约束}) \end{array}最小化受限于f(x)gi(x)0,i=1,,m(不等式约束)hj(x)=0,j=1,,l(等式约束)

2. 拉格朗日函数

同样地,构造拉格朗日函数 L(x,λ,μ)\mathcal{L}(\mathbf{x}, \mathbf{\lambda}, \mathbf{\mu})L(x,λ,μ)
L(x,λ,μ)=f(x)+∑i=1mλigi(x)+∑j=1lμjhj(x)\mathcal{L}(\mathbf{x}, \mathbf{\lambda}, \mathbf{\mu}) = f(\mathbf{x}) + \sum_{i=1}^m \lambda_i g_i(\mathbf{x}) + \sum_{j=1}^l \mu_j h_j(\mathbf{x})L(x,λ,μ)=f(x)+i=1mλigi(x)+j=1lμjhj(x)

  • λi\lambda_iλi 对应不等式约束 gi(x)≤0g_i(\mathbf{x}) \le 0gi(x)0
  • μj\mu_jμj 对应等式约束 hj(x)=0h_j(\mathbf{x}) = 0hj(x)=0

3. KKT 条件 (Necessary Conditions)

如果 x∗\mathbf{x}^*x 是上述问题的一个局部最优解,并且满足约束规范 (Constraint Qualification, CQ)(例如,LICQ - 线性独立约束规范),那么存在乘数 λ∗≥0\mathbf{\lambda}^* \ge \mathbf{0}λ0μ∗\mathbf{\mu}^*μ,使得以下 KKT 条件成立:

KKT-1: 梯度驻点条件 (Stationarity)

目标函数梯度与所有约束梯度的线性组合为零:
∇xL(x∗,λ∗,μ∗)=∇f(x∗)+∑i=1mλi∗∇gi(x∗)+∑j=1lμj∗∇hj(x∗)=0\nabla_{\mathbf{x}} \mathcal{L}(\mathbf{x}^*, \mathbf{\lambda}^*, \mathbf{\mu}^*) = \nabla f(\mathbf{x}^*) + \sum_{i=1}^m \lambda_i^* \nabla g_i(\mathbf{x}^*) + \sum_{j=1}^l \mu_j^* \nabla h_j(\mathbf{x}^*) = \mathbf{0}xL(x,λ,μ)=f(x)+i=1mλigi(x)+j=1lμjhj(x)=0

KKT-2: 原始可行性 (Primal Feasibility)

解必须满足所有的约束:
gi(x∗)≤0,i=1,…,mg_i(\mathbf{x}^*) \le 0, \quad i=1, \dots, mgi(x)0,i=1,,m
hj(x∗)=0,j=1,…,lh_j(\mathbf{x}^*) = 0, \quad j=1, \dots, lhj(x)=0,j=1,,l

KKT-3: 对偶可行性 (Dual Feasibility)

对应于不等式约束的拉格朗日乘数必须是非负的:
λi∗≥0,i=1,…,m\lambda_i^* \ge 0, \quad i=1, \dots, mλi0,i=1,,m
(注意:等式约束乘数 μj∗\mu_j^*μj 没有符号限制)

KKT-4: 互补松弛性 (Complementary Slackness)

这是 KKT 条件的核心,它定义了不等式约束的性质:
λi∗gi(x∗)=0,i=1,…,m\lambda_i^* g_i(\mathbf{x}^*) = 0, \quad i=1, \dots, mλigi(x)=0,i=1,,m

互补松弛性的深入理解:
对于每个不等式约束 gi(x)≤0g_i(\mathbf{x}) \le 0gi(x)0,只有两种情况:

  1. 约束是非激活的 (Inactive): gi(x∗)<0g_i(\mathbf{x}^*) < 0gi(x)<0。最优解在可行域的内部。此时,为了使 λi∗gi(x∗)=0\lambda_i^* g_i(\mathbf{x}^*) = 0λigi(x)=0 成立,必须有 λi∗=0\lambda_i^* = 0λi=0。这意味着非激活的约束对最优解没有影响,其梯度不参与梯度平衡。
  2. 约束是激活的 (Active): gi(x∗)=0g_i(\mathbf{x}^*) = 0gi(x)=0。最优解落在可行域的边界上。此时 λi∗\lambda_i^*λi 可以大于零 (λi∗>0\lambda_i^* > 0λi>0),意味着这个激活的约束是必要的,它参与了梯度平衡。

4. 充分条件 (Sufficient Conditions)

KKT 条件只是局部最优的必要条件。若要保证它也是充分条件,我们需要引入凸性 (Convexity) 的概念:

  • 如果目标函数 f(x)f(\mathbf{x})f(x)凸函数
  • 如果所有的不等式约束函数 gi(x)g_i(\mathbf{x})gi(x)凸函数
  • 如果所有的等式约束函数 hj(x)h_j(\mathbf{x})hj(x)仿射函数(即 hj(x)=ajTx−bjh_j(\mathbf{x}) = \mathbf{a}_j^T \mathbf{x} - b_jhj(x)=ajTxbj)。

在一个凸规划问题中,任何满足 KKT 条件的点 x∗\mathbf{x}^*x 都是全局最优解。 这是 KKT 条件在实际应用中最重要的价值。


第三部分:拉格朗日乘数的经济学解释(影子价格)

拉格朗日乘数 λi∗\lambda_i^*λiμj∗\mu_j^*μj 在经济学中被称为影子价格 (Shadow Price)边际价值 (Marginal Value)

  • 定义: 拉格朗日乘数 λi∗\lambda_i^*λi 的值表示,如果将第 iii 个约束条件放宽(或收紧)一个单位,最优目标函数值 f(x∗)f(\mathbf{x}^*)f(x) 将会发生的近似变化率

具体来说,如果我们将不等式约束 gi(x)≤0g_i(\mathbf{x}) \le 0gi(x)0 略微改变为 gi(x)≤ϵg_i(\mathbf{x}) \le \epsilongi(x)ϵ,则新的最优目标函数值 f(x∗(ϵ))f(\mathbf{x}^*(\epsilon))f(x(ϵ)) 近似满足:
∂f(x∗(ϵ))∂ϵ≈λi∗\frac{\partial f(\mathbf{x}^*(\epsilon))}{\partial \epsilon} \approx \lambda_i^*ϵf(x(ϵ))λi

因此,λi∗\lambda_i^*λi 量化了约束资源的稀缺性:

  • 如果 λi∗>0\lambda_i^* > 0λi>0,表示该约束是激活的(资源稀缺),放宽约束会使最优目标函数值降低(对最小化问题而言,是一个更好的解)。
  • 如果 λi∗=0\lambda_i^* = 0λi=0,表示该约束是非激活的(资源充足),放宽或收紧该约束对最优目标函数值没有影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值