简单介绍处理不等式约束问题的内点法的算法流程。
不等式约束的极小化问题
minf0(x)
s.t.fi(x)≤0
Ax=b
假设该问题可解,即存在最优的
x⋆
,用
p⋆
表示最优值
f0(x⋆)
。
用内点法求解问题,主要分为两种:
- 用Newton方法或者求解一系列
等式约束问题
- 求解一系列
KKT条件
的修改形式
这里只讨论一种特殊的内点法–障碍法
。
对数障碍函数和中心路径
一种尝试是将不等式约束问题近似转化为等式约束问题,从而应用Newton方法求解。 因此,可以将原问题写成:
minf0(x)+∑i=1mI_(fi(x))
s.t.Ax=b
其中
I_
是非正实数的示性函数:
I_(u){0u≤0∞u>0
这样,我们就成功转化为等式约束,可以,目标函数一般情况下不可微,因此不能运用Newton方法。
对数障碍
既然示性函数不可微,我们很自然的想法就是找一个近似的可微函数来代替:
I^_(u)=−(1/t)log(−u)
我们可以画出对数障碍函数的图像发现,是非减函数,并且当
u>0
时取值为
∞
,符合我们的要求。
我们将函数
ϕ(x)=−∑mi=1log(−fi(x))
称为对数障碍函数。可以将等式约束问题重写为:
minf0(x)+∑i=1m−(1/t)log(−fi(x))
s.t.Ax=b
既然对数障碍只是原问题的近似,因此需要回答的问题就是其解的效果与最优解差距多大?这个问题将在中心路径中解决。
先给出对数障碍的梯度和Hessian矩阵:
▽ϕ(x)=∑i=1m1−fi(x)▽fi(x)
▽2ϕ(x)=∑i=1m1fi(x)2▽fi(x)▽fi(x)T+∑i=1m1−fi(x)▽2fi(x)
中心路径
考虑等价问题:
mintf0(x)+ϕ(x)
s.t.Ax=b
这里只是多乘了一个
t
,对最优解没有影响。
对任意
t>0
,我们用
x⋆(t)
表示问题的最优解,
t
为中心点,将这些点的集合定义为问题的中心路径。
所有中心路径上的点满足以下充要条件:
Ax⋆(t)=b,fi(x⋆(t))<0
t▽f0(x⋆(t))+▽ϕ(x⋆(t))+ATv^=0
中心路径的对偶点
g(λ⋆(t),v⋆(t))=f0(x⋆(t))−m/t≤p⋆
证明了
x⋆(t)
随着
t⇒∞
而收敛于最优解。