代码改变世界

库恩塔克条件

2012-10-19 22:59  ggzwtj  阅读(6294)  评论(1编辑  收藏  举报

如下的数学模型称为数学规划:

首先,看约束条件H,如果x发生任何微小的变化就会引起该约束的崩溃,所以H在任何时刻都是有效的。G则可以分成两部分:和=,=的情况和H相同,是有效约束,而对于的情况,只要x的变化足够小就可以保证该约束不会被破坏,所以这个约束是无效的。

将g泰勒级数展开得到:

那么只要,那么只要保证在任意的可行方向D上都有:

那么只要足够小就可以保证在可行集中。

同理,在可行集中只要存在:

那么就能找到更小的f值,也就是说不是极值点。那么进一步也就知道了,在:

不存在D使得上面两个条件同时存在的时候,那么在存在极值。

现在开始考虑如何求出极值,两种情况:

  • 在可行区域内部;
  • 在可行区域边缘;

对于第一种情况,只有h起作用,有现成的解法就不说了。

对于第二种情况:如果在一个约束的边缘上,也就是

那么,不管朝什么方向走只有两种结果:

  1. g(x)<0
  2. f(x)增加

所以,此处的g和f的向量方向一定方向相同,也就是:


有了这个基础,那么当处于多个有效约束上的时候也是一样的,在x变化的时候其实是在多个向量上的线性的叠加,那么就可以把看作是多个g的叠加的。也就是:


为了使得所有的g都在上式中出现,增加约束条件:

γg(x)=0

这样在不在约束条件的时候,γ=0。

好了,现在介绍库恩塔克条件:

其实也就是扩展的拉格朗日乘子法。库恩塔克是确定极值点的必要条件,但一般来讲不是充分条件(在凸规划中时充要条件)。