数值优化(Numerical Optimization)学习系列-二次规划(Quadratic Programming)

概述

二次规划问题是目标函数是二次的,并且约束是线性的问题。在非线性约束最优化问题中非常重要,通常作为其他问题的子步骤存在。
1.二次规划问题
2.二次规划求解算法
3. 总结

二次规划问题

标准形式

二次规划问题的标识形式如下

minq(x)=12xTGx+xTcs.t.aTix=bi, iE aTixbi, iI
如果矩阵G为半正定,则该问题为凸二次规划,否则为非凸二次规划。本节讨论重点凸二次规划问题。

二次规划求解算法

等式约束二次规划

在标准形式下,去掉不等式约束,可以得到等式约束二次规划问题的标准形式。

minq(x)=12xTGx+xTcs.t.Ax=b
其中矩阵A一般为行满秩矩阵。

KKT条件

根据KKT条件可以得到,最优解应该满足的一阶条件为

[GAAT0][xλ]=[cb]

当某搜索步骤x时,根据 x=x+p 代入上式公式,可以得到搜索步长。
[GAAT0][pλ]=[gh]
其中 h=Axb,g=c+Gx,p=xx ,上面矩阵就是KKT矩阵。

1.当 ZTGZ 是半正定时,KKT矩阵非奇异,等式约束最优化问题有唯一的解 (x,λ) ,其中Z是矩阵A的零空间,即AZ=0
2. 并且该解是全局最优解

求解算法

因此等式约束最优化问题转换为求解上述KKT矩阵对应的等式,常用的方法包括
1. 直接求解方程,高斯消元法等
2. Schur-Complement方法
3. 零空间方法
以上方法都是利用代数方法直接求解方程。对于问题规模比较大的问题可以采用迭代方法,例如CG或者Krylov方法,相对后者比较有效。

不等式约束问题

对于不等式约束问题,常见的思路包括有效集方法、内点法和梯度映射等方法。

KKT条件

根据二次规划的标准形式可以得到,对应的拉格朗日方程为

L(x,λ)=12xTGx+xTciEIλi(aTixbi)
根据有效集的定义 A(x)=iEI|aTix=bi
KKT条件为
Gx+ciA(λiai)=0aTix=bi, iEaTixbi, iIλi0

满足上述KKT条件的解 λ,x 是全局最优解

有效集算法

该算法和线性规划的单纯形算法类似,每次固定一个工作集合 W ,然后求解等式约束的QP问题。对于得到的解进行约束判断是否满足以及存在其他最优解,否则进行换入和换出操作。
1. 对于每次迭代过程 xk,Wk ,需要寻找一个最优搜索方向p,使得 p=xxk,gk=Gxk+c,q(xk+p)=12pTGp+gTkp+δk 由于 δkxk ,因此问题转换为 min12pTGp+gTkp;  s.t.aTip=0
2. 问题转换等式约束最优化问题,根据求解算法得到搜索方向 pk
3. 由于不等式约束还要满足其他不等式,因此下一个搜索点 xk+1=xk+αkpk ,由于对于每个不等式都应该满足 aTi(xk+αkpk)bi ,当 aTipk0 时肯定满足,否则 αkbiaTixkaTipk
4. 综合所有的不等式约束,可以得到

αk=min(1,minaTipk0(biaTixkaTipk))

5. 当某个 αk<1 时,说明被第K个不等式阻塞,说明 aTipk0 ,此时可以将该不等式约束放入到工作集合中。
6. 当搜索方向p=0时,说明当前点为最优点,从而计算对应的拉格朗日因子,如果全部大于0,则满足所有的KKT条件,否则去掉该约束能够继续减小目标函数值。
综上该算法伪代码如下
数值优化(Numerical Optimization)学习系列-二次规划(Quadratic Programming)_第1张图片
实际考虑点
1.和单纯性算法类似,在算法开始,需要找到一个可行解,寻找方法类似,可以构造PhraseI或者PhraseII问题。
2.往工作集 W 中添加不等式约束时,一般要求在W中的约束线性独立。
3. 当找到最优点时,但是不满足拉格朗日因子非负约束时,去掉约束时一般选择绝对值较大的。

内点法

类似于线性规划的内点法方法,计算问题的中心路径,直到趋近于最优解。
该内点法主要针对凸二次规划问题,形式如下

minq(x)=12xTGx+xTcs.t.Axb

KKT条件为
GxATλ+c=0Axb0(Axb)Tλ=0λ0
添加松弛变量Y则有
minq(x)=12xTGx+xTcs.t.Axb

KKT条件为
GxATλ+c=0Axyb=0yTλ=0(y,λ)0

定义度量参数为 μ=yTλm ,则问题转换为求解中心路径,
F(x,y,λ;σμ)=GxATλ+cAxybYΛeσμe=0

此时可以根据牛顿法进行求解得到步长,下下一个搜索点为 (x,y,λ)+α(x,y,λ)
在实际问题中会在此基础上改进,牛顿方程如何求解,参数 λ 如何选取

梯度映射

梯度映射方法是对有效集算法的改进,不同于有效集算法,梯度映射方法每次都会选在多个参数变量加入到有效集中。但是该方法只限于求解如下问题

minq(x)=12xTGx+xTcs.t.lxμ
对于G是否正定都能求解,思路如下
1. 在某步骤x,按照最速下降法求解下一个搜索点, xk+αp ,由于约束限制,会被阻塞住,此时计算有效集。
2. 在上述有效集合的基础上,计算一个子问题,使得 q(x+)q(xk)
3. 重复上述两个步骤。

总结

本节简要介绍了如下内容
1. 二次规划问题的形式
2. 二次规划常用算法的求解思路。

详细算法的实现,可以参考各个数值工具。

你可能感兴趣的:(数值优化,数值优化,二次规划,QP)