最优化理论与KKT条件

1. 最优化理论(Optimization Theory)

最优化理论是研究函数在给定一组约束条件下的最小值(或者最大值)的数学问题. 一般而言, 一个最优化问题具有如下的基本形式:

\[\min .:f({\bf{x}})\]
\[\begin{array}{*{20}{c}}
{{\rm{s}}{\rm{.t}}{\rm{.:}}} & {{g_i}({\bf{x}}) \le 0,i = 1,2,...,p,} \\
{} & {{h_j}({\bf{x}}) = 0,k = 1,2,...,q,} \\
{} & {{\bf{x}} \in \Omega \subset {{\bf{R}}^n}} \\
\end{array}\]

其中. \(f({\bf{x}})\)为目标函数, \({g_i}({\bf{x}}) \le 0,i = 1,2,…,p\) 为不等式约束条件, \({h_j}({\bf{x}}) = 0,k = 1,2,…,q\)为等式约束条件.

在很多情况下, 不等式约束条件可以通过引入新的变量而转化为等式约束条件, 因此最优化问题的一般形式可以简化为仅仅包含等式约束条件的形式

\[\begin{array}{l}
\min .:f({\bf{x}}) \\
{\rm{s}}{\rm{.t}}{\rm{.}}:g({\bf{x}}){\rm{ = }}0 \\
\end{array}\]

最优化问题可以根据目标函数和约束条件的类型进行分类:

1). 如果目标函数和约束条件都为变量的线性函数, 称该最优化问题为线性规划;

2). 如果目标函数为变量的二次函数, 约束条件为变量的线性函数, 称该最优化问题为二次规划;

3). 如果目标函数或者约束条件为变量的非线性函数, 称该最优化问题为非线性规划.

2. KKT(Karush-Kuhn-Tucker)

KKT条件是指在满足一些有规则的条件下, 一个非线性规划(Nonlinear Programming)问题能有最优化解法的一个必要和充分条件. 这是一个广义化拉格朗日乘数的成果. 一般地, 一个最优化数学模型的列标准形式参考开头的式子, 所谓 Karush-Kuhn-Tucker 最优化条件,就是指上式的最优点\({{\bf{x}}^ * }\)必须满足下面的条件:

1). 约束条件满足\({g_i}({{\bf{x}}^ * }) \le 0,i = 1,2,…,p\), 以及\(,{h_j}({{\bf{x}}^ * }) = 0,j = 1,2,…,q\)

2). \(\nabla f({{\bf{x}}^ * }) + \sum\limits_{i = 1}^p {{\mu _i}\nabla {g_i}({{\bf{x}}^ * })} + \sum\limits_{j = 1}^q {{\lambda _j}\nabla {h_j}({{\bf{x}}^ * })} = {\bf{0}}\), 其中\(\nabla \)为梯度算子;

3). \({\lambda _j} \ne 0\)且不等式约束条件满足\({\mu _i} \ge 0,{\mu _i}{g_i}({{\bf{x}}^ * }) = 0,i = 1,2,…,p\)

KKT最优化条件是Karush[1939]以及Kuhn和Tucker[1951]先后独立发表出来的. 这组最优化条件在Kuhn和Tucker发表之后才逐渐受到重视, 因此许多书只记载成「Kuhn-Tucker 最优化条件 (Kuhn-Tucker conditions)」.

KKT条件第一项是说最优点\({{\bf{x}}^ * }\)必须满足所有等式及不等式限制条件, 也就是说最优点必须是一个可行解, 这一点自然是毋庸置疑的. 第二项表明在最优点\({{\bf{x}}^ * }\), \(\nabla f\)必须是\(\nabla {g_i}\)和\(\nabla {h_j}\)的线性組合, \({\mu _i}\)和\({\lambda _j}\)都叫作拉格朗日乘子. 所不同的是不等式限制条件有方向性, 所以每一个\({\mu _i}\)都必须大于或等于零, 而等式限制条件没有方向性,所以\({\lambda _j}\)没有符号的限制, 其符号要视等式限制条件的写法而定.

3. 关于duality

一位博友对duality的总结很通俗易懂, http://blog.pluskid.org/?p=702 这里就不再重复复述了.

最优化理论与KKT条件》上有 2 条评论

  1. Clear and useful. Many thanks.
    By the way, there is a typing error in the first line under 2. KKT(Karush-Kuhn-Tucker): The “KTT” should be “KKT”.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>