
























Karush-Kuhn-Tucker (KKT) 条件,是判断一个点是否为约束优化问题最优解的必要条件。对于你刚才问的凸二次规划,它甚至是充分必要条件——满足了 KKT,就找到了全局最优解。
一般优化问题形式:
最小化 f(x)
满足 g_i(x) ≤ 0 (i=1,...,m) —— 不等式约束
h_j(x) = 0 (j=1,...,l) —— 等式约束
KKT 条件把有约束的优化问题,转化成一个方程组/不等式组的求解问题。如果候选点 x* 是局部最优解,并且满足一定的“正则性条件”,那么必然存在乘子 μ_i 和 λ_j,使以下条件成立。
拉格朗日函数对变量 x 的梯度为零:
∇f(x*) + Σ μ_i ∇g_i(x*) + Σ λ_j ∇h_j(x*) = 0
这是“在约束边界上,目标函数的负梯度方向必须落在约束梯度张成的锥里”的数学表达。简单理解:在约束包围下,没有可行的下降方向了。
g_i(x*) ≤ 0, h_j(x*) = 0
点必须在可行域内,这是基本要求。
对于不等式约束的乘子:
μ_i ≥ 0
它保证约束形成的“推”力是朝向可行域内部的,而不是反向。
μ_i · g_i(x*) = 0 (对每个不等式约束 i)
这意味着:
g_i(x*) = 0,处于边界),乘子 μ_i 可以 > 0。g_i(x*) < 0,在内部),乘子 μ_i 必须等于 0。它把“哪些约束真正在起作用”这件事自动编码到了乘子里。
凸二次规划:
最小化 (1/2)xᵀQx + cᵀx
满足 Ax ≤ b
Qx* + c + Aᵀμ = 0 (稳定性)
Ax* ≤ b (原始可行性)
μ ≥ 0 (对偶可行性)
μᵀ(b - Ax*) = 0 (互补松弛)
这是一个混合线性互补问题,也是内点法、增广拉格朗日法等算法实际求解的系统。
想象一个简单的二次规划:
最小化 x²
满足 x ≥ 1
x = 0。x ≥ 1 约束后,最优解是 x* = 1,约束生效。L = x² - μ(x - 1)2x - μ = 0 → μ = 2x ≥ 1 ✓μ = 2 ≥ 0 ✓μ(x - 1) = 2 × 0 = 0 ✓如果约束改成 x ≥ -5(不生效),最优解就是 x* = 0:
2x - μ = 0 → μ = 0μ(x + 5) = 0 × 5 = 0 ✓KKT 条件的精髓正在于此:它用乘子和互补松弛条件,优雅地区分了“起作用”和“不起作用”的约束。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。