凸优化问题
一般用
min
f
0
(
x
)
{f_{_0}}(x)
f0(x)
s.t.
f
i
(
x
)
≤
0
,
i
=
1
,
.
.
.
,
m
{f_i}(x) \le 0,i = 1,...,m
fi(x)≤0,i=1,...,m
h
i
(
x
)
=
0
,
i
=
1
,
.
.
.
,
p
{h_i}(x) = 0,i = 1,...,p
hi(x)=0,i=1,...,p
其中,f0(x)是目标函数,
f
i
(
x
)
{f_i}(x)
fi(x)是不等式约束,
h
i
(
x
)
{h_{_i}}(x)
hi(x)是等式约束。如果没有约束,就称问题为无约束问题。
对目标和所有约束函数有定义的点的集合,称为该问题的定义域,记为:
D
=
⋂
i
=
0
m
d
o
m
f
i
∩
⋂
i
=
1
p
d
o
m
h
i
D = \bigcap\limits_{i = 0}^m {dom{\rm{ }}{f_i}} \cap \bigcap\limits_{i = 1}^p {dom{\rm{ }}{{\rm{h}}_i}}
D=i=0⋂mdomfi∩i=1⋂pdomhi
一般要求:
f
0
(
x
)
{f_{_0}}(x)
f0(x)与
f
i
(
x
)
{f_{_i}}(x)
fi(x)是凸函数,且
h
i
(
x
)
{h_{_i}}(x)
hi(x)为仿射函数(仿射函数即是有一截多项式构成的函数,一般为fx=Ax+b,其中A是个矩阵,x和b是向量),这样的问题就是凸优化问题。(定义域也要求为凸集)当目标函数是凹函数需要求极大值时,可以通过加负号转为凸函数求极小。
这里需要注意,不等式约束fi(x)<=0则要求fi(x)为凸函数,若fi(x)>=0则要求fi(x)为凹函数
凸优化的任一局部极值点也就是全局的极值点,局部最优情况也是全局最优情况。
概念先介绍到这,下面接着上一篇拉格朗日乘子法,介绍文章开头带有不等式约束条件的优化问题:
对于不等式约束的优化,一般满足著名的KKT条件,满足条件的解就是极小值点
我们定义不等式约束下的拉格朗日函数:
L
(
x
,
λ
,
v
)
=
f
0
(
x
)
+
∑
i
=
1
m
λ
i
f
i
(
x
)
+
∑
i
=
1
p
v
i
h
i
(
x
)
L(x,\lambda ,v) = {f_0}(x) + \sum\limits_{i = 1}^m {{\lambda _i}} {f_{_i}}(x) + \sum\limits_{i = 1}^p {{v_i}{h_i}(x)}
L(x,λ,v)=f0(x)+i=1∑mλifi(x)+i=1∑pvihi(x)
若要求解优化问题,必须满足下列条件,
1、L对x的一阶导数为0
2、h(x)=0
3、
λ
i
{{\lambda _i}}
λi>=0 (对偶可行性)
4、
λ
i
f
i
(
x
)
=
0
{\lambda _i}{f_i}(x) = 0
λifi(x)=0(互补松弛条件,想要明白该条件为什么成立,可以参考知乎上的一篇文章:浅谈最优化问题的kkt条件)
注意kkt条件是最优解的必要条件
如果不是凸优化问题,还要附加一个L(x,
λ
i
{{\lambda _i}}
λi)是正定的条件