-
问题层次结构
假设所有问题都是凸的,可以按照以下层次结构来理解:
- 二次问题:最简单,有闭式解
- 等式约束的二次问题:仍然容易,使用 KKT 条件推导闭式解
- 等式约束的光滑问题:使用牛顿方法将其转化为一系列等式约束的二次问题
- 不等式约束(以及等式约束)的光滑问题:使用内点法将其转化为一系列等式约束问题
-
含不等式约束的凸优化问题
标准形式
minimizesubject tof0(x)fi(x)≤0,i=1,…,mAx=b
其中:
- fi:Rn↦R,定义域为 domfi
- A∈Rp×n 为行满秩矩阵
-
基本假设
- f0,f1,…,fm 均为具有连续二阶导数的凸函数
- 存在最优解 x∗
- 存在 x∈D=⋂0≤i≤mdomfi 满足 fi(x)<0,i=1,…,m 且 Ax=b(Slater 条件)
-
KKT 条件
在以上假设下,根据 Slater 定理,(x∗,λ∗,ν∗) 是原对偶问题最优解的充要条件是它们同时满足以下 KKT 方程:
fi(x∗)≤0,∀1≤i≤mAx∗=bλi∗fi(x∗)=0,∀1≤i≤mλ∗≥0∇f0(x∗)+∑i=1mλi∗∇fi(x∗)+ATν∗=0
-
指示函数及其近似
非正实数集合的指示函数
I−(u)={0∞∀u≤0∀u>0
对数近似函数(对数障碍函数)
近似函数可以是负实轴上任意阶可导的凸函数,常用的对数近似函数为:
I^−(u)=−t1log(−u)
其中 t>0 是一个大数。
特点:
- 对于更大的 t,这个近似更准确
- 对于任何 t 值,如果 u>0,对数障碍函数都趋向于 ∞
-
对数障碍函数
定义
ϕ(x)=−i=1∑mlog(−fi(x))
梯度
∇ϕ(x)=i=1∑m−fi(x)1∇fi(x)
Hessian 矩阵
∇2ϕ(x)=i=1∑mfi(x)21∇fi(x)∇fi(x)T+i=1∑m−fi(x)1∇2fi(x)
-
近似优化问题
原始问题
min{f0(x)∣s.t. fi(x)≤0,i=1,…,m,Ax=b}
等价形式(使用指示函数)
min{f0(x)+i=1∑mI−(fi(x))∣s.t. Ax=b}
近似形式(使用对数障碍函数)
min{f0(x)+t1ϕ(x)∣s.t. Ax=b}
等价形式(乘以 t)
min{tf0(x)+ϕ(x)∣s.t. Ax=b}
-
中心路径
定义
对任意 t>0,用 x∗(t) 表示上述近似优化问题的最优解,即:
tf0(x∗(t))+ϕ(x∗(t))=min{tf0(x)+ϕ(x)∣s.t. Ax=b}
我们将 {x∗(t),t>0} 定义为该优化问题的中心路径(Central Path)。
性质
- 当 t→+∞ 时,x∗(t)→x∗(原始问题的最优解)
- 不能直接设置 t 为一个很大的值来求解,因为这在实践中效率很低
- 更有效的方法是沿着中心路径遍历
-
线性规划的特殊情况
障碍问题
对于线性规划问题,障碍问题为:
xmin{tcTx−i=1∑mlog(ei−diTx)}
其中障碍函数对应于多面体约束 Dx≤e。
梯度最优性条件
0=tc−i=1∑mei−diTx∗(t)1di
这意味着梯度 ∇ϕ(x∗(t)) 必须与 −c 平行,即超平面 {x:cTx=cTx∗(t)} 在 x∗(t) 处与 ϕ 的等高线相切。
-
中心路径的 KKT 条件
中心路径 x∗(t) 一定满足某个如下的 KKT 条件:
t∇f0(x∗(t))+∇ϕ(x∗(t))+ATν∗(t)=0
其中 ν∗(t) 是对应的对偶变量。
-
扰动 KKT 条件
对于标准形式的线性规划,扰动 KKT 条件为:
ATν+u=cxiui=1/t,i=1,…,nAx=bx,u≥0
-
障碍方法
残差函数(消除 u 后)
rbr(x,ν)=(ATν+diag(x)−1⋅(1/t)1−cAx−b)
牛顿方程
[−diag(x)−2/tAAT0](ΔxΔν)=−rbr(x,ν)
算法步骤:
- 求解牛顿方程得到 Δy=(Δx,Δν)
- 进行线搜索:y+=y+sΔy(其中 s>0 通过线搜索确定)
- 迭代直到收敛
- 更新 t=μt(其中 μ>1 是更新因子)
-
原对偶方法
残差函数
rpd(x,u,ν)=ATν+u−cdiag(x)u−(1/t)1Ax−b
牛顿方程
0diag(u)AIdiag(x)0AT00ΔxΔuΔν=−rpd(x,u,ν)
算法步骤:
- 求解牛顿方程得到 Δy=(Δx,Δu,Δν)
- 进行线搜索:y+=y+sΔy(其中 s>0 通过线搜索确定)
- 只进行一次迭代(与障碍方法不同)
- 更新 t=μt
-
原对偶方法的可行性保持性质
重要性质
一旦回溯线搜索允许 s=1(即取一个完整的牛顿步),原对偶方法的迭代点从该点开始将保持原对偶可行性。
证明思路
Δx,Δu,Δν 的构造使得:
ATΔν+ΔuAΔx=−rdual=−(ATν+u−c)=−rprim=−(Ax−b)
因此,在完成一个完整的牛顿步后,x+=x+Δx,u+=u+Δu,ν+=ν+Δν,我们有:
rdual+rprim+=ATν++u+−c=0=Ax+−b=0
所以迭代点是原对偶可行的。
-
性能比较
例子:标准线性规划,n=50 个变量,m=100 个等式约束
- 障碍方法:使用不同的 μ 值
- 原对偶方法:使用 μ=10
- 两者都使用 α=0.01,β=0.5(线搜索参数)
观察:
- 原对偶方法在达到高精度时收敛更快
- 对于一系列问题(n=2m,n 增长),原对偶方法只需要稍微更多的迭代次数,尽管它产生更高精度的解
-
历史回顾
- Dantzig (1940s):单纯形法,至今仍是线性规划最著名/研究最深入的算法之一
- Klee 和 Minty (1972):构造了病态线性规划问题,有 n 个变量和 2n 个约束,单纯形法需要 2n 次迭代才能求解
- Khachiyan (1979):基于 Nemirovski 和 Yudin (1976) 的椭球法的多项式时间算法。理论强,实践弱
- Karmarkar (1984):线性规划的内点多项式时间方法。相当高效(美国专利 4,744,026,2006 年到期)
- Renegar (1988):基于牛顿的线性规划内点算法。直到 Lee 和 Sidford (2014) 之前,这是已知的最佳复杂度
- 现代最先进的线性规划求解器:通常同时使用单纯形法和内点法