- 優秀教程-真正理解拉格朗日乘子法和 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?λi?hi?(x)+j=1∑p?μj?gj?(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 ?x?L(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≥0?gj?(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條件是必要條件。