KKT条件

非线性约束:
$$
\begin{matrix}
\min & f(\mathbf x) \\
\mathbb {s.t.} & g_j(\mathbf x) = 0 \\
& h_k(\mathbf x) \le 0
\end{matrix}
$$
定义拉格朗日函数:
$$
L(\mathbf x, \mathbf \lambda, \mathbf \mu) = f(\mathbf x) + \sum_{j=1}^m \lambda_j g_j(\mathbf x) + \sum_{k=1}^p \mu_k h_k(\mathbf x)
$$
KKT条件(Karush–Kuhn–Tucker conditions):
$$
\begin{cases}
\nabla _\mathbf x L & = \mathbf 0 \\
g_j (\mathbf x) & = 0 \\
h_k(\mathbf x) & \le 0 \\
\mu_k & \ge 0 \\
\mu_k h_k(\mathbf x) & = 0
\end{cases}
$$

1 等式约束的优化问题

$$
\begin {matrix}
\min & f(x) & \\
\mathbb {s.t.} & g(x) &= 0
\end{matrix}
$$

定义Lagrange函数:
$$
L(x, \lambda) = f(x) + \lambda g(x)
$$
其中$\lambda$称为拉格朗日乘数。这种方法将等式约束的优化问题转化为无约束的优化问题:
$$
\min _{x,\lambda} L(x,\lambda)
$$
具体方法是对$x$和$\lambda$求偏导数,令等于0,得到最优解的必要条件:
$$
\begin{cases}
\nabla _x L = \nabla _x f +\lambda \nabla_x g = 0 \\
\nabla _\lambda L = g = 0
\end{cases}
$$
这个方程组为等式约束的极值必要条件。

2 不等式约束的优化问题

假设存在不等式约束的优化问题:
$$
\begin{matrix}
\min & f(x) \\
\mathbb {s.t.} & h(x) \le 0
\end{matrix}
$$
假设拉格朗日函数:
$$
L(x,\mu) = f(x) + \mu h(x)
$$

约束不等式$h(x)\le 0$称为原始可行性,对应的区域${ x \in R | h(x) \le 0}$称为可行域。假设存在满足条件的最优解$x_0$,则:

  1. $h(x_0) \lt 0$,此时$x_0$位于可行域内部,称为内部解。此时原始问题退化为无约束问题,驻点$x_0$满足$\nabla_{x_0} f = 0, \mu = 0 $。
  2. $h(x_0) = 0$,此时$x_0$位于可行域边界,称为边界解。此时原始不等式约束问题退化为等式约束问题,$\nabla _{x_0} L = 0$。由于我们希望梯度$\nabla f$指向可行域的内部,梯度$\nabla h$指向可行域的外部,因此$\mu \ge 0$。

综上,$\mu \ge 0, \mu h(x) = 0$。

整合上述两种情况,得到不等式约束下的KKT条件:
$$
\begin {cases}
\nabla _x L = 0 \\
h(x) \le 0 \\
\mu \ge 0 \\
\mu h(x) = 0
\end{cases}
$$

3 KKT条件

推广到多个等式约束和不等式约束条件:
$$
\begin{matrix}
\min & f(\mathbf x) \\
\mathbb {s.t.} & g_j(\mathbf x) = 0 \\
& h_k(\mathbf x) \le 0
\end{matrix}
$$
得到对应的KKT条件:
$$
\begin{cases}
\nabla _\mathbf x L & = \mathbf 0 \\
g_j (\mathbf x) & = 0, j=1,\dots,m \\
h_k(\mathbf x) & \le 0, k=1,\dots,p \\
\mu_k & \ge 0 \\
\mu_k h_k(\mathbf x) & = 0
\end{cases}
$$