主要有三种:
- 拉格朗日乘子法
- KKT算法
- 对偶问题
最优化问题:
min f(x)
s.t. hi(x) = 0 i = 1,2,3,4,5,...,m
gj(x) <= 0 j = 1,2,3,4,5,...,m
- 对于无约束条件,我们对变量求导,并让导数为0,求得极值
- 对于等式约束条件,我们使用拉格朗日乘子法
- 对于既有等式约束又有不等式约束条件,我们使用KKT条件
只包含等式约束的拉格朗日乘子法
目标函数f(x)的约束条件为:hk(x), k=1,2,3,...,m
所求解问题建模为:min f(x),s.t. hk(x)=0, k=1,2,3,...,m
我们需要构建拉格朗日函数,将带约束问题转换为无约束优化问题
转换方式:
图1 f(x)与h(x) 函数图像
图1为f(x)与h(x)图像,要求f(x)在h(x)约束下的极值点,只有两者图像相切的时候才有极值点,如上图,在相切点处,h(x)与f(x)的梯度共线。则有:
于是我们将原始问题转换为:
上式中k为下标,L:为拉格朗日函数,
为拉格朗日乘子。我们对拉格朗日函数对x求偏导数,令导数为0,求解极值。
KKT算法
求解最优化问题类型:约束条件中既有等式又有不等式。我们对这样问题建模如图2。
图2 含有等式约束和不等式约束问题建模
我们将图2问题利用KKT条件来构建拉格朗日函数,如图3,:为拉格朗日乘子.
:为KKT乘子。至此,我们将约束问题转换为无约束问题,对其求导,即可求出极值。
注意:KKT乘子是大于0的。
图3 利用KKT条件构建拉格朗日函数
图4 求出极值点满足 KKT条件
对偶问题
1. 原问题的等价表示
2. 证明等价:
3.对偶问题定义
4.对偶问题的证明 :