一、概念介绍
KKT最优化条件是Karush(1939)以及Kuhn和Tucker(1951)先后独立发表出来的,但在Kuhn和Tucker发表之后才逐渐受到重视,因此多数情况下记载成库恩-塔克条件(Kuhn-Tucker conditions)。先介绍几个优化的概念。
1.1 优化
最优化问题,是指在一定约束条件下,求解一个目标函数的最大值(或最小值)问题。根据是否有变量的约束条件,可以将优化问题分为无约束优化问题和约束优化问题。
1.2 无约束优化问题
目标函数的可行域为全空间,对目标函数直接求导求出极值点。
1.3 约束优化问题(Constrained Optimization)
约束优化问题中变量需要满足一些等式或不等式的约束条件。约束优化问题通常使用拉格朗日乘数法来进行求解。
1.4 凸优化
非线性优化问题中,有一类比较特殊的问题是凸优化问题(Conver Programming)。在凸优化问题中,变量x的可行域为凸集,即对于集合中任意两点,他们的连线全部位于在集合内部。目标函数f也必须为凸函数,即满足
1.5 KKT条件
KKT(Karush-Kuhn-Tucker)条件,是非线性规划领域里最重要的理论成果之一,是确定某点为极值点的必要条件。对于凸规划,KKT点就是优化极值点(充分必要条件)。
1.6 凸优化问题转化成拉格朗日函数去进行求解的,KKT条件其实是有3组条件:包括原问题可行条件、对偶可行条件、互补松弛条件。
所以介绍KKT条件之前先介绍拉格朗日函数的对偶问题
二、拉格朗日函数求最值
因为拉格朗日函数背后的意义和梯度有关,梯度是一个向量
只有在目标函数和约束条件相切的位置,目标函数的梯度方向和约束条件的梯度方向才是相反的
三、拉格朗日函数的对偶问题
3.1 原问题可行条件
遇到一个非凸问题又该怎么办呢,那就是去看它的拉格朗日函数的对偶问题
所以,原问题可行条件可知为:
构造拉格朗日函数写出来,其实就是求min(L)
3.2 对偶问题可行条件
先找到一个对偶函数,交换一下顺序,lambda、miu看成常数,x看作变量,先去求最小minL,这个函数叫对偶函数,对偶函数上如果增加求最大maxg加上的约束条件,就是左边原问题的对偶问题,相当于就是把计算顺序颠倒一下,如下
所以,对偶问题可行条件为:
3.3 互补松弛条件
互补松弛条件:
四、举例
求最值
求解过程: