天天看点

二次规划

概述

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

二次规划问题

标准形式

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

minq(x)=12xTGx+xTcs.t.aTix=bi, i∈E aTix≥bi, i∈I

如果矩阵G为半正定,则该问题为凸二次规划,否则为非凸二次规划。本节讨论重点凸二次规划问题。

二次规划求解算法

等式约束二次规划

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

minq(x)=12xTGx+xTcs.t.Ax=b

其中矩阵A一般为行满秩矩阵。

KKT条件

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

[GA−AT0][x∗λ∗]=[−cb]

当某搜索步骤x时,根据 x∗=x+p代入上式公式,可以得到搜索步长。

[GAAT0][−pλ∗]=[gh]

其中 h=Ax−b,g=c+Gx,p=x∗−x,上面矩阵就是KKT矩阵。

1.当ZTGZ
           

是半正定时,KKT矩阵非奇异,等式约束最优化问题有唯一的解(x∗,λ∗)

,其中Z是矩阵A的零空间,即AZ=0
2. 并且该解是全局最优解
           

求解算法

因此等式约束最优化问题转换为求解上述KKT矩阵对应的等式,常用的方法包括

  1. 直接求解方程,高斯消元法等
  2. Schur-Complement方法
  3. 零空间方法

    以上方法都是利用代数方法直接求解方程。对于问题规模比较大的问题可以采用迭代方法,例如CG或者Krylov方法,相对后者比较有效。

    不等式约束问题

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

KKT条件

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

L(x,λ)=12xTGx+xTc−∑i∈E∪Iλi(aTix−bi)

根据有效集的定义 A(x∗)=(i∈E∪I|aTix∗=bi)

KKT条件为

Gx∗+c−∑i∈A(λ∗iai)=0aTix=bi, i∈EaTix≥bi, i∈Iλ∗i≥0

满足上述KKT条件的解(λ∗,x∗)

是全局最优解
           

有效集算法

该算法和线性规划的单纯形算法类似,每次固定一个工作集合W

,然后求解等式约束的QP问题。对于得到的解进行约束判断是否满足以及存在其他最优解,否则进行换入和换出操作。

  1. 对于每次迭代过程xk,Wk,需要寻找一个最优搜索方向p,使得p=x−xk,gk=Gxk+c,q(xk+p)=12pTGp+gTkp+δk由于δk关于xk是个常数,因此问题转换为min12pTGp+gTkp; s.t.aTip=0
  2. 问题转换等式约束最优化问题,根据求解算法得到搜索方向pk
  3. 由于不等式约束还要满足其他不等式,因此下一个搜索点xk+1=xk+αkpk,由于对于每个不等式都应该满足aTi(xk+αkpk)≥bi,当aTipk≥0时肯定满足,否则αk≤bi−aTixkaTipk
  4. 综合所有的不等式约束,可以得到

    αk=min(1,minaTipk≤0(bi−aTixkaTipk))

  5. 当某个 αk<1时,说明被第K个不等式阻塞,说明 aTipk≤0,此时可以将该不等式约束放入到工作集合中。
  6. 当搜索方向p=0时,说明当前点为最优点,从而计算对应的拉格朗日因子,如果全部大于0,则满足所有的KKT条件,否则去掉该约束能够继续减小目标函数值。

    综上该算法伪代码如下

    这里写图片描述

    实际考虑点

    1.和单纯性算法类似,在算法开始,需要找到一个可行解,寻找方法类似,可以构造PhraseI或者PhraseII问题。

    2.往工作集 W中添加不等式约束时,一般要求在W中的约束线性独立。

  7. 当找到最优点时,但是不满足拉格朗日因子非负约束时,去掉约束时一般选择绝对值较大的。

内点法

类似于线性规划的内点法方法,计算问题的中心路径,直到趋近于最优解。

该内点法主要针对凸二次规划问题,形式如下

minq(x)=12xTGx+xTcs.t.Ax≥b

KKT条件为

Gx−ATλ+c=0Ax−b≥0(Ax−b)Tλ=0λ≥0

添加松弛变量Y则有

minq(x)=12xTGx+xTcs.t.Ax≥b

KKT条件为

Gx−ATλ+c=0Ax−y−b=0yTλ=0(y,λ)≥0

定义度量参数为 μ=yTλm,则问题转换为求解中心路径,

F(x,y,λ;σμ)=⎡⎣⎢Gx−ATλ+cAx−y−bYΛe−σμe⎤⎦⎥=0

此时可以根据牛顿法进行求解得到步长,下下一个搜索点为 (x,y,λ)+α(∇x,∇y,∇λ)

在实际问题中会在此基础上改进,牛顿方程如何求解,参数λ如何选取

梯度映射

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

minq(x)=12xTGx+xTcs.t.l≤x≤μ

对于G是否正定都能求解,思路如下

  1. 在某步骤x,按照最速下降法求解下一个搜索点, xk+αp,由于约束限制,会被阻塞住,此时计算有效集。
  2. 在上述有效集合的基础上,计算一个子问题,使得 q(x+)≤q(xk)
  3. 重复上述两个步骤。

总结

本节简要介绍了如下内容

  1. 二次规划问题的形式
  2. 二次规划常用算法的求解思路。

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

转自:https://blog.csdn.net/fangqingan_java/article/details/49720497