- 优秀教程-真正理解拉格朗日乘子法和 KKT 条件: link
- 优秀教程-最优化(6):一般约束优化问题的最优性理论: link
KKT条件(Karush-Kuhn-Tucker条件)是非线性规划中的一组必要条件,在某些情况下也是最优解的充分条件。它是对拉格朗日乘数法的推广,适用于有约束的优化问题。以下是详细公式和解释:
问题形式
考虑如下非线性优化问题:
minimize f ( x ) , x ∈ R n \text{minimize } f(x), \quad x \in \mathbb{R}^n minimize f(x),x∈Rn
约束条件:
-
等式约束:
h i ( x ) = 0 , i = 1 , … , m h_i(x) = 0, \quad i = 1, \ldots, m hi(x)=0,i=1,…,m -
不等式约束:
g j ( x ) ≤ 0 , j = 1 , … , p g_j(x) \leq 0, \quad j = 1, \ldots, p gj(x)≤0,j=1,…,p
这里:
- f ( x ) f(x) f(x) 是目标函数;
- h i ( x ) h_i(x) hi(x) 是等式约束函数;
- g j ( x ) g_j(x) gj(x) 是不等式约束函数。
KKT条件
KKT条件包括以下几个部分:
1. 可行性条件
变量 x ∗ x^* x∗ 必须满足约束条件:
h i ( x ∗ ) = 0 , i = 1 , … , m h_i(x^*) = 0, \quad i = 1, \ldots, m hi(x∗)=0,i=1,…,m
g j ( x ∗ ) ≤ 0 , j = 1 , … , p g_j(x^*) \leq 0, \quad j = 1, \ldots, p gj(x∗)≤0,j=1,…,p
2. 拉格朗日函数
定义拉格朗日函数:
L ( x , λ , μ ) = f ( x ) + ∑ i = 1 m λ i h i ( x ) + ∑ j = 1 p μ j g j ( x ) \mathcal{L}(x, \lambda, \mu) = f(x) + \sum_{i=1}^m \lambda_i h_i(x) + \sum_{j=1}^p \mu_j g_j(x) L(x,λ,μ)=f(x)+i=1∑mλihi(x)+j=1∑pμjgj(x)
其中:
- λ i \lambda_i λi 是等式约束的拉格朗日乘数;
- μ j \mu_j μj 是不等式约束的拉格朗日乘数( μ j ≥ 0 \mu_j \geq 0 μj≥0)。
3. 一阶必要条件(梯度条件)
在最优解处,拉格朗日函数对 x x x 的梯度为零:
∇ x L ( x ∗ , λ ∗ , μ ∗ ) = ∇ f ( x ∗ ) + ∑ i = 1 m λ i ∗ ∇ h i ( x ∗ ) + ∑ j = 1 p μ j ∗ ∇ g j ( x ∗ ) = 0 \nabla_x \mathcal{L}(x^*, \lambda^*, \mu^*) = \nabla f(x^*) + \sum_{i=1}^m \lambda_i^* \nabla h_i(x^*) + \sum_{j=1}^p \mu_j^* \nabla g_j(x^*) = 0 ∇xL(x∗,λ∗,μ∗)=∇f(x∗)+i=1∑mλi∗∇hi(x∗)+j=1∑pμj∗∇gj(x∗)=0
4. 互补松弛条件
对于每个不等式约束:
μ j ∗ g j ( x ∗ ) = 0 , j = 1 , … , p \mu_j^* g_j(x^*) = 0, \quad j = 1, \ldots, p μj∗gj(x∗)=0,j=1,…,p
这表示如果某个不等式约束 g j ( x ) g_j(x) gj(x) 未达到边界(即 g j ( x ∗ ) < 0 g_j(x^*) < 0 gj(x∗)<0),那么对应的拉格朗日乘数 μ j ∗ \mu_j^* μj∗ 必须为 0;反之,如果 g j ( x ∗ ) = 0 g_j(x^*) = 0 gj(x∗)=0,那么 μ j ∗ ≥ 0 \mu_j^* \geq 0 μj∗≥0。
5. 拉格朗日乘数非负性
对于不等式约束,拉格朗日乘数必须非负:
μ j ∗ ≥ 0 , j = 1 , … , p \mu_j^* \geq 0, \quad j = 1, \ldots, p μj∗≥0,j=1,…,p
总结公式
KKT条件可以总结为如下形式:
(1) 可行性条件: h i ( x ∗ ) = 0 , g j ( x ∗ ) ≤ 0 (2) 梯度条件: ∇ f ( x ∗ ) + ∑ i = 1 m λ i ∗ ∇ h i ( x ∗ ) + ∑ j = 1 p μ j ∗ ∇ g j ( x ∗ ) = 0 (3) 互补松弛: μ j ∗ g j ( x ∗ ) = 0 (4) 非负性: μ j ∗ ≥ 0 \begin{aligned} &\text{(1) 可行性条件: } & h_i(x^*) &= 0, & g_j(x^*) &\leq 0 \\ &\text{(2) 梯度条件: } & \nabla f(x^*) + \sum_{i=1}^m \lambda_i^* \nabla h_i(x^*) + \sum_{j=1}^p \mu_j^* \nabla g_j(x^*) &= 0 \\ &\text{(3) 互补松弛: } & \mu_j^* g_j(x^*) &= 0 \\ &\text{(4) 非负性: } & \mu_j^* &\geq 0 \end{aligned} (1) 可行性条件: (2) 梯度条件: (3) 互补松弛: (4) 非负性: hi(x∗)∇f(x∗)+i=1∑mλi∗∇hi(x∗)+j=1∑pμj∗∇gj(x∗)μj∗gj(x∗)μj∗=0,=0=0≥0gj(x∗)≤0
适用条件
KKT条件成立需要一定的假设,例如约束的正则性(满足线性独立约束限定条件或Slater条件)。当这些假设成立时:
- 如果 f ( x ) f(x) f(x)、 h i ( x ) h_i(x) hi(x)、 g j ( x ) g_j(x) gj(x) 是凸函数,KKT条件是充分条件。
- 对一般优化问题,KKT条件是必要条件。