文档维护:Arvin

网页部署:Arvin

写在前面:本文内容是作者在深蓝学院机器人中的数值优化学习时的笔记,作者按照自己的理解进行了记录,如果有错误的地方还请执政。如涉侵权,请联系删除。

锥规划(笔记)

锥和对称锥

尖锥

如果一组点κRn\kappa\subseteq\mathbb{R}^n满足以下条件,则称为尖锥:

Conic:aK,λ0λaKPointed:aK and aKa=0\begin{aligned}&{\text{Conic:}\quad a\in\mathcal{K},\lambda\geq0\Rightarrow\lambda a\in\mathcal{K}}\\&{\text{Pointed:}\quad a\in\mathcal{K}\mathrm{~and~}-a\in\mathcal{K}\Rightarrow a=0}\end{aligned}

第一个条件即向量aa在集合K\mathcal{K}中,λ0\lambda\geq0,则λa\lambda a也必然在集合K\mathcal{K}中;第二个条件是若向量aa在集合K\mathcal{K}中,则向量a-a不在集合K\mathcal{K}中,除非向量a=0a=0

1

凸锥

在尖锥的基础上,若进一步满足a,aKa+aKa,a^{\prime}\in\mathcal{K}\Rightarrow a+a^{\prime}\in\mathcal{K},则为凸锥。截面可以是任意形状,比如凸多面体、椭圆、超椭圆。

2

  • 多面体锥

    1. AxbAx\leq b构成的多面体,其中xRnx\in\mathbb{R}^n
    2. 增加一个维度此时空间(t,x)Rn+1(t,x)\in\mathbb{R}^{n+1},构成一个多面体锥{t0,Axbt}\{t\geq0,Ax\leq bt\}
    3. t=1t=1时的切片截面是原始多面体。

    3

  • 椭圆锥

    1. 椭圆xPx+qx+r0x^\top Px+q^\top x+r\leq0,其中P0P\succ0xRnx\in\mathbb{R}^n
    2. 进行仿射变换Ax+bc\Longleftrightarrow\|Ax+b\|\leq c
    3. {t0,Ax+btct}\{t\geq0,\|Ax+bt\|\leq ct\}(t,x)Rn+1(t,x)\in\mathbb{R}^{n+1}空间中的一个椭圆锥。
    4. t=1t=1时的切片是原始椭圆。

以下三类锥,分别对应LP线性规划、SOCP二次锥规划、SDP半定规划。

常见的锥及其性质

  • 非负象限

    R0n={xRnxi0,i=1,,n}\mathbb{R}_{\geq0}^n=\{x\in\mathbb{R}^n\mid x_i\geq0,i=1,\ldots,n\}

    4

  • 二阶锥

    Qn={(x0,x1)TR×Rn1x0x12}\mathcal{Q}^n=\left\{\left(x_0,x_1\right)^{\mathrm{T}}\in\mathbb{R}\times\mathbb{R}^{n-1}\mid x_0\geq\left\|x_1\right\|_2\right\}

    5

  • 半正定锥

    S0n={xRn(n+1)/2zTmax(x)z0,zRn}\mathcal{S}_{\geq0}^n=\left\{x\in\mathbb{R}^{n(n+1)/2}\mid z^\mathrm{T}\max(x)z\geq0,\forall z\in\mathbb{R}^n\right\}

6

经过仿射变换或旋转,锥可以拓展至如下形式:

7

8

9

对称锥

R0n,Qn,S0n\mathbb{R}_{\geq0}^n,\mathcal{Q}^n,\mathcal{S}_{\geq0}^n这些锥都是对称的,我们可以将其表示成平方锥(cones of squares)。

  • 正象限锥positive orthant

    R0n={xRnxi0,i=1,,n}={[y]2yRn}\mathbb{R}_{\geq0}^n=\{x\in\mathbb{R}^n\mid x_i\geq0,i=1,\ldots,n\}=\color{red}\{[y]^2\mid y\in\mathbb{R}^n\}

  • 二阶锥second-order cone

    Qn={(x0,x1)TR×Rn1x0x12}={12(y02+y1Ty1,2y0y1)T(y0,y1)TR×Rn1}\mathcal{Q}^n=\left\{\left(x_0,x_1\right)^{\mathrm{T}}\in\mathbb{R}\times\mathbb{R}^{n-1}\mid x_0\geq\left\|x_1\right\|_2\right\}=\color{red}\left\{\frac{1}{\sqrt{2}}\left(y_0^2+y_1^{\mathrm{T}}y_1,2y_0y_1\right)^{\mathrm{T}}\mid\left(y_0,y_1\right)^{\mathrm{T}}\in\mathbb{R}\times\mathbb{R}^{n-1}\right\}

  • 半正定锥Positive semi-definite cone

    S0n={xRn(n+1)/2zmax(x)z0,zRn}={vec(mat(y)mat(y))yRn(n+1)/2}\mathcal{S}_{\geq0}^n=\left\{x\in\mathbb{R}^{n(n+1)/2}\mid z^\text{T }{ \max ( x ) }z\geq0,\forall z\in\mathbb{R}^n\right\}=\color{red}\left\{\operatorname{vec}(\operatorname{mat}(y)\operatorname{mat}(y))\mid y\in\mathbb{R}^{n(n+1)/2}\right\}

平方操作

锥是对称的当且仅当他是平方时

{x2:=xxxRn}\begin{Bmatrix}x^2:=x\circ x\mid x\in\mathbb{R}^n\end{Bmatrix}

必须满足下面特性:

  • xyx\circ y是线性的,即kxy=k(xy)kx\circ y=k(x\circ y)
  • xy=yxx\circ y=y\circ x
  • x2(yx)=(x2y)xx^2\circ(y\circ x)=(x^2\circ y)\circ x
  • $\langle x,y\circ z\rangle=\langle x\circ y,z\rangle $

(Rn,)(\mathbb{R}^n,\circ)被称为欧几里得乔丹代数Euclidean Jordan algebra。通过代数,可以用统一的方式研究对称锥形成的约束。

圈乘的定义:

  • 正象限锥

    R0n={yyyRn}\mathbb{R}_{\geq0}^n=\{y\circ y\mid y\in\mathbb{R}^n\}

    其定义为:

    xy:=diag(x)yx\circ y:=\operatorname{diag}(x)y

  • 二阶锥

    Qn={yyy=(y0,y1)TR×Rn1}\mathcal{Q}^n=\left\{y\circ y\mid y=(y_0,y_1)^\text{T}\in\mathbb{R}\times\mathbb{R}^{n-1}\right\}

    其定义为:

    xy:=12[xTyx0y1+y0x1]x\circ y:=\dfrac{1}{\sqrt{2}}\begin{bmatrix}x^Ty\\x_0y_1+y_0x_1\end{bmatrix}

  • 半正定锥

    S0n={yyyRn(n+1)/2}\mathcal{S}_{\geq0}^n=\left\{y\circ y\mid y\in\mathbb{R}^{n(n+1)/2}\right\}

    其定义为:

    xy:=12vec(mat(x)mat(y)+mat(y)mat(x))x\circ y:=\frac12\mathrm{vec}\big(\mathrm{mat}(x)\mathrm{mat}(y)+\mathrm{mat}(y)\mathrm{mat}(x)\big)

谱分解

每个欧几里得代数都有其谱分解:

x=i=1θλiqix=\sum_{i=1}^\theta\lambda_iq_i

其中λi\lambda_i是特征值,qiq_i是特征向量。

分解后的每个特征向量,都满足:

qi2=qi,qiqj(i)=0q_i^2=q_i,\quad q_i\circ q_{j(\neq i)}=0

易知:

  • 特征向量是正交的qi,qj(i)=qiqi,qj(i)=qi,qiqj(i)=0\langle q_i,q_{j(\neq i)}\rangle=\langle q_i\circ q_i,q_{j(\neq i)}\rangle=\langle q_i,q_i\circ q_{j(\neq i)}\rangle=0
  • 当且仅当一个向量的所有特征值都非负时,该向量在对称锥中。
  • 当且仅当一个向量的所有特征值都为正时,该向量在对称锥的内部。

常见锥体的谱分解:

  • 正象限锥(positive orthant)

    λi=xi,qi=ei\lambda_i=x_i,\quad q_i=e_i

  • 二阶锥(second-order cone)

    λi=x0±x122,qi=12[1±x1/x12]\lambda_i=\frac{x_0\pm\|x_1\|_2}{\sqrt{2}},\quad q_i=\frac1{\sqrt{2}}\begin{bmatrix}1\\\pm x_1/\|x_1\|_2\end{bmatrix}

  • 半正定锥(second-order cone)

    λi=λi,qi=vec(viviT)\lambda_i=\lambda_i,\quad q_i=\mathrm{vec}(v_iv_i^\mathrm{T})

    其中λi\lambda_iviv_imat(x)mat(x)的特征值和特征向量。

对称锥的自对偶性

K\mathcal{K}的对偶锥记为K\mathcal{K}^*,即与中K\mathcal{K}任意元素yy的内积大于0的xx的集合,如下所示:

K={xx,y0,yK}\mathcal{K}^*=\{x\mid\langle x,y\rangle\geq0,\forall y\in\mathcal{K}\}

因此对称锥的对偶锥是他本身,即K=K\mathcal{K}^*=\mathcal{K}

对称锥的应用

回顾一下之前约束优化问题的分类:

10

上面的包含关系是怎么来的呢?

  1. LP写成QP形式

    11

  2. QP写成SOCP的形式

    12

  3. SOCP写成SDP形式

    13

二阶锥规划问题是一类对称锥规划问题,另外有一部分半定规划问题也是对称锥规划问题,也就是说这两类规划问题的不等式约束条件都可以表示为解处于一个对称锥内的形式。SDP是最广泛的对称凸锥优化问题!许多优化问题可以通过 Lasserre hierarchy 结构简化为SDP。

锥增广拉格朗日函数

数值优化笔记(三):锥规划问题

推导

对称锥规划问题可以表示成:

minxRncTxs.t.Aix+biKi,i=1,,mGx=h\begin{aligned} &\min_{x\in\mathbb{R}^{n}} c^{\mathrm{T}}x \\ &\mathrm{s.t.} A_{i}x+b_{i}\in\mathcal{K}_{i},i=1,\ldots,m \\ &Gx=h \end{aligned}

由前面我们可以根据对称锥的概念,所有对称锥内部的向量,可以表示为一个Rn\mathbb{R}^n向量关于圈乘

minx,scTxs.t.Aix+bi=sisi, i=1,,mGx=h\begin{aligned} &\min_{x,s} c^{\mathrm{T}}x \\ &\mathbf{s.t.} A_ix+b_i={s_i\circ s_i},\mathrm{~}i=1,\ldots,m \\ &Gx=h \end{aligned}

因此我们可以构建对于等式约束的拉格朗日函数如下:

Lρ(x,s,λ,ν):=cTx+ρ2Gxh+λρ2+ρ2i=1mAix+bisisi+νiρ2\mathcal{L}_\rho(x,s,\lambda,\nu):=c^\mathrm{T}x+\frac{\rho}{2}\begin{Vmatrix}Gx-h+\frac{\lambda}{\rho}\end{Vmatrix}^2+\frac{\rho}{2}\sum_{i=1}^m\begin{Vmatrix}A_ix+b_i-s_i\circ s_i+\frac{\nu_i}{\rho}\end{Vmatrix}^2

{xk+1=argminx,sL(xk,sk,λk,μk,ρk)λk+1=λk+ρk(Gxk+1h)μik+1=μik+ρk(Aixk+1+bisisi)ρk+1=min(ρk+γρk,β)\begin{cases}x^{k+1}=\arg\min_{x,s}\mathcal{L}(x^k,s^k,\lambda^k,\mu^k,\rho^k)\\\lambda^{k+1}=\lambda^k+\rho^k(Gx^{k+1}-h)\\\mu_i^{k+1}=\mu_i^k+\rho^k(A_ix^{k+1}+b_i-s_i\circ s_i)\\\rho^{k+1}=\min(\rho^k+\gamma\rho^k,\beta)\end{cases}

其中,kk代表迭代轮数,λ\lambdaμi\mu_i是拉格朗日乘子,ρ\rho是惩罚系数。当时上述式子中多出来一个变量ss。下面是将其消去的推导过程:

对于minx,sL\min_{x,s}\mathcal{L}问题,由于ss只和最后一项有关,因此对于任何一个xx,都可以很容易地求解出对应的最优的ss^*的取值。只需要求解下面的优化问题即可,这里可以将xx看作常量:

mins12ρi=1mAix+bisisi+μiρ2\begin{aligned}\min_s\frac{1}{2}\rho\sum_{i=1}^m||A_ix+b_i-s_i\circ s_i+\frac{\mu_i}{\rho}||^2\end{aligned}

上述式子中Aix+bi+μiρA_{i}x+b_{i}+\frac{\mu_{i}}{\rho}ss无关,并且sis_i之间也无关联。因此上述式子可以写成:

minsvsisi2\min_{s}||v-s_i\circ s_i||^2

其中v=Aix+bi+μiρv=A_{i}x+b_{i}+\frac{\mu_{i}}{\rho}

minsvsisi2=minxKvx2\min_s\left\|v-s_i\circ s_i\right\|^2=\min_{x\in\mathcal{K}}\left\|v-x\right\|^2

我们从几何角度去理解这个问题,事实上这个问题的最优解就是找到向量vv在对称锥K\mathcal{K}上的投影向量,此时vxv-x与锥垂直,即距离最近。如下图所示:

14

我们用Pκ(v)P_{\kappa}(v)表示向量vvK\mathcal{K}上的投影,则可以得到下式:

minsvsisi2=PK(v)2\min_s\left\|v-s_i\circ s_i\right\|^2=\left\|P_{\mathcal{K}}\left(-v\right)\right\|^2

且根据对称锥的另一个特性Moreau decomposition(此处不具体推导,看下图即可):

15

由上可得:

vPK(v)=PK(v)v-P_{\mathcal{K}}(v)=-P_{\mathcal{K}}(-v)

最终我们可以得到:

minsvsisi2=PK(v)2\min_s\left\|v-s_i\circ s_i\right\|^2=\left\|P_{\mathcal{K}}(-v)\right\|^2

所以原拉格朗日函数:

minsLρ(x,s,λ,ν)=cTx+ρ2Gxh+λρ2+ρ2i=1mPKi(Aixbiνiρ)2\min_s\mathcal{L}_\rho(x,s,\lambda,\nu)=c^\mathrm{T}x+\frac\rho2\begin{Vmatrix}Gx-h+\frac\lambda\rho\end{Vmatrix}^2+\frac\rho2\sum_{i=1}^m\begin{Vmatrix}P_{\mathcal{K}_i}\big(-A_ix-b_i-\frac{\nu_i}\rho\big)\end{Vmatrix}^2

我们用μ=v\mu=-v,因此对称锥的增广拉格朗日量:

Lρ(x,λ,μ):=cTx+ρ2{Gxh+λρ2+i=1mPKi(μiρAixbi)2}12ρ{λ2+μ2}\mathcal{L}_\rho(x,\lambda,\mu):=c^\mathrm{T}x+\frac\rho2\Big\{\left\|Gx-h+\frac\lambda\rho\right\|^2+\sum_{i=1}^m\left\|P_{\mathcal{K}_i}\left(\frac{\mu_i}\rho-A_ix-b_i\right)\right\|^2\Big\}-\color{gray}\frac1{2\rho}\Big\{\|\lambda\|^2+\|\mu\|^2\Big\}

其原函数下降和对偶函数上升过程与PHR-ALM相同。

特别的,对偶变量的更新如下:(μi)(μi)+ρ(Aix+bsisi)(-\mu_i)\leftarrow(-\mu_i)+\rho(A_ix+b-s_i\circ s_i),其中sisi=PK(Aix+bi+μiρ)s_{i}\circ s_{i}=P_{\mathcal{K}}(A_{i}x+b_{i}+\frac{-\mu_{i}}{\rho})

再运用一次莫罗分解,可以得到:

μiPKi(μiρ(Aix+bi))\mu_i\leftarrow P_{\mathcal{K}_i}(\mu_i-\rho(A_ix+b_i))

总结如下

原问题为:

minxRncTxs.t.Aix+biKi,i=1,,mGx=h\begin{aligned} &\min_{x\in\mathbb{R}^{n}} c^{\mathrm{T}}x \\ &\mathrm{s.t.} A_{i}x+b_{i}\in\mathcal{K}_{i},i=1,\ldots,m \\ &Gx=h \end{aligned}

其增广拉格朗日函数为:

Lρ(x,λ,μ):=cTx+ρ2{Gxh+λρ2+i=1mPKi(μiρAixbi)2}12ρ{λ2+μ2}\mathcal{L}_\rho(x,\lambda,\mu):=c^\mathrm{T}x+\frac\rho2\Big\{\left\|Gx-h+\frac\lambda\rho\right\|^2+\sum_{i=1}^m\left\|P_{\mathcal{K}_i}\left(\frac{\mu_i}\rho-A_ix-b_i\right)\right\|^2\Big\}-\color{gray}\frac1{2\rho}\Big\{\|\lambda\|^2+\|\mu\|^2\Big\}

其中ρ>0,μiKi\rho > 0, \mu_i \in \mathcal{K}_i,然后进行迭代

{xargminxLρ(x,λ,μ)λλ+ρ(Gxh)μiPKi(μiρ(Aix+bi))ρmin[(1+γ)ρ, β]\begin{cases}x\leftarrow\operatorname{argmin}_x\mathcal{L}_\rho(x,\lambda,\mu)\\\lambda\leftarrow\lambda+\rho(Gx-h)\\\mu_i\leftarrow P_{\mathcal{K}_i}\big(\mu_i-\rho(A_ix+b_i)\big)\\\rho\leftarrow\min[(1+\gamma)\rho,~\beta]\end{cases}

  • 初始化ρini=1,λini=μini=0,γ=1,β=103\rho_{\mathrm{ini}}=1,\lambda_{\mathrm{ini}}=\mu_{\mathrm{ini}}=0,\gamma=1,\beta=10^3
  • 迭代终止条件max[Gxh,maxiμρPKi(μρAixbi)]<ϵcons,xLρ(x,λ,μ)<ϵprec\max\left[\left\|Gx-h\right\|_\infty,\max_i\left\|\frac{\mu}{\rho}-P_{\mathcal{K}_i}\big(\frac{\mu}{\rho}-A_ix-b_i\big)\right\|_\infty\right]<\epsilon_{\mathrm{cons}},\left\|\nabla_x\mathcal{L}_\rho(x,\lambda,\mu)\right\|_\infty<\epsilon_{\mathrm{prec}}

锥投影的计算

根据谱分解的概念,任意一个向量都可以分解为:

x=i=1θλiqix=\sum_{i=1}^\theta\lambda_iq_i

对于不同的锥qiq_i也是不同的,投影操作可以被描述为:

PK(x)=i=1θmax(λi,0)qi\mathrm{P}_{\mathcal{K}}(x)=\sum_{i=1}^\theta\max(\lambda_i,0)q_i

上述式子的含义是,把向量xx按照qiq_i进行分解,并将所有小于0的特征值设置为0,然后再进行线性组合。即把分解后所有特征值为负数的部分舍弃。

半光滑牛顿方法

锥增广拉格朗日算法的迭代过程中需要求解一个无约束优化问题:

minxLρ(x,λ,μ)=cTx+ρ2{Gxh+λρ2+i=1mPχi(μiρAixbi)2}\min_{x}\mathcal{L}_{\rho}(x,\lambda,\mu)=c^{\mathrm{T}}x+\frac{\rho}{2}\Big\{\left\|Gx-h+\frac{\lambda}{\rho}\right\|^{2}+\sum_{i=1}^{m}\left\|P\chi_{i}\left(\frac{\mu_{i}}{\rho}-A_{i}x-b_{i}\right)\right\|^{2}\Big\}

这个问题中,目标函数是一个一阶连续可微的凸函数,但无法保证二阶连续可微,因此其Hessian未必是连续的。因此,上述问题可以用梯度下降法和拟牛顿法进行求解,但无法用一般的牛顿方法进行求解。

使用拟牛顿法求解时,

该子问题就是增广拉格朗日函数对xx求最小值,即

Lρ(x,λ,μ)w.r.t.x\mathcal{L}_\rho(x,\lambda,\mu)\text{w.r.t.}x

其梯度和Hessian矩阵是

g=xLρ(x,λ,μ),H=x2Lρ(x,λ,μ)g=\nabla_x\mathcal{L}_\rho(x,\lambda,\mu),H=\nabla_x^2\mathcal{L}_\rho(x,\lambda,\mu)

圆锥增广拉格朗日函数的凸性保证了

H0H\succeq0

所以我们是否可以使用拟牛顿法进行下列更新?

(H+ϵI)d=g, ϵ=min(1,g)(H+\epsilon I)d=-g,\mathrm{~}\epsilon=\min(1,\|g\|_\infty)

在二阶连续可微的地方当然可以,但是当最优解在边界上(锥的边缘),很有可能在Hessian不存在的区域,可以采用如下介绍的半光滑的牛顿方法。

半光滑的定义

定义一个向量函数:F(x):RnRnF(x):\mathbb{R}^n\to\mathbb{R}^n,那么当F(x)F(x)xx处方向可导,且

limdRn,d0F(x+d)F(x)J(d)dd=0,J(d)=F(x+d)\lim_{d\in\mathbb{R}^n,d\to0}\frac{||F(x+d)-F(x)-J(d)d||}{||d||}=0, \forall J(d)=\partial F(x+d)

则称F(x)F(x)xx处是半光滑的。

如果再进一步,若满足下列条件,它是强半光滑的

limdRn, d0F(x+d)F(x)J(d)dd2<, J(d)F(x+d)\lim_{d\in\mathbb{R}^n,\mathrm{~}d\to0}\frac{\|F(x+d)-F(x)-J(d)d\|}{\|d\|^2}<\infty,\mathrm{~}\forall J(d)\in\partial F(x+d)

B次微分的定义

BF(x)={limkF(xk)xkDF,xkx}\partial_BF(x)=\{\lim_{k\to\infty}F'(x^k)|x^k\in D_F,x^k\to x\},其中DFD_F代表的是xkx^k的可行域。B次微分和一般次微分的关系是:F(x)=conv(BF(x))\partial F(x)=\operatorname{conv}(\partial_BF(x)),其中convconv代表取凸包的操作。

半光滑牛顿方法

如果F(x):RnRnF(x):\mathbb{R}^n\mapsto\mathbb{R}^n是半光滑的,则J(x)BF(x)J(x)\in\partial_BF(x)是非奇异的

xk+1=xkJ(xk)1F(xk)x^{k+1}=x^k-J(x^k)^{-1}F(x^k)

也就是说,用B次微分代替Hessian矩阵参与牛顿迭代,这就是所谓的半光滑牛顿法

上述迭代可以达到局部超线性收敛

F(x)=0F(x)=0

如果F(x):RnRnF(x):\mathbb{R}^n\mapsto\mathbb{R}^n是强光滑的,迭代可以到达局部二次收敛

g(x):=xLρ(x,λ,μ)g(x):=\nabla_x\mathcal{L}_\rho(x,\lambda,\mu)

锥增广拉格朗日函数的梯度是强半光滑的,因为它是分段C2。
因此,我们可以如下计算半平滑牛顿步来进行无约束优化

(H+ϵI)d=gg=xLρ(x,λ,ρ)HBxLρ(x,λ,ρ)ϵ=min(1,g)/10\begin{aligned} &(H+{\epsilon}I)d=-{g} \\ &g=\nabla_x\mathcal{L}_\rho(x,\lambda,\rho) \\ &H\in\partial_B\nabla_x\mathcal{L}_\rho(x,\lambda,\rho) \\ &\epsilon=\min(1,\|g\|_\infty)/10 \end{aligned}

如何计算梯度和B次微分呢?

梯度可以直接进行计算:

xLρ(x,λ,μ)=c+GT(λ+ρ(Gxh))i=1mAiTPKi(μρ(Aix+bi))\nabla_x\mathcal{L}_\rho(x,\lambda,\mu)=c+G^\mathrm{T}(\lambda+\rho(Gx-h))-\sum_{i=1}^mA_i^\mathrm{T}P_{\mathcal{K}_i}(\mu-\rho(A_ix+b_i))

所谓的广义Hessian,即梯度的B次微分如下式:

BxLρ(x,λ,μ)=ρ(GTG+i=1mAiTBPKi(μρ(Aix+bi))Ai)\partial_B\nabla_x\mathcal{L}_\rho(x,\lambda,\mu)=\rho\Big(G^\mathrm{T}G+\sum_{i=1}^mA_i^\mathrm{T}\partial_BP_{\mathcal{K}_i}(\mu-\rho(A_ix+b_i))A_i\Big)

特别的,对于SOCP,B次微分可以选择为:

BPKi(x){Inx2x1,0x2x1,(12x2T2x2x22x2x1+x22x2In1x1x2x2T2x23)x2>x1.\partial_{B} P_{\mathcal{K}_{i}}(x) \ni\left\{\begin{array}{ll} I_{n} & \left\|x_{2}\right\| \leq x_{1}, \\ 0 & \left\|x_{2}\right\| \leq-x_{1}, \\ \left(\begin{array}{cc} \frac{1}{2} & \frac{x_{2}^{\mathrm{T}}}{2\left\|x_{2}\right\|} \\ \frac{x_{2}}{2\left\|x_{2}\right\|} & \frac{x_{1}+\left\|x_{2}\right\|}{2\left\|x_{2}\right\|} I_{n-1}-\frac{x_{1} x_{2} x_{2}^{\mathrm{T}}}{2\left\|x_{2}\right\|^{3}} \end{array}\right) & \left\|x_{2}\right\|>\left|x_{1}\right| . \end{array}\right.

应用:时间最优路径规划(TOPP)

路径qq由弧长变量ss参数化,TOPP是在给定的平滑路径上生成时间剖面,路径的持续时间应该尽可能地短。

16

使用弧长参数s来对路径进行参数化,s的值表示的是距离路径起点所走过的距离。与速度加速度的概念类似:

a(s)=d2sdt2,b(s)=(dsdt)2{a(s)}=\frac{\mathrm{d}^2s}{\mathrm{d}t^2},{b(s)}=\left(\frac{\mathrm{d}s}{\mathrm{d}t}\right)^2

根据运动学基础公式

vs2v02=2asv_s^2-v_0^2=2as

距离参数化速度的平方与二阶导数成线性关系

b(s)=2a(s)b^{\prime}(s)=2a(s)

所以,目标函数(时间最优)

T=0T1dt=s(0)s(T)1ds/dtds=0L1ds/dtds=0L1b(s)dsT=\int_0^T1\mathrm{d}t=\int_{s(0)}^{s(T)}\frac{1}{\mathrm{d}s/\mathrm{d}t}\mathrm{d}s=\int_0^L\frac{1}{\mathrm{d}s/\mathrm{d}t}\mathrm{d}s=\int_0^L\frac{1}{\sqrt{b(s)}}\mathrm{d}s

真实速度

dqdt=q(s)dsdt=q(s)b(s)\frac{\mathrm{d}q}{\mathrm{d}t}=q'(s)\frac{\mathrm{d}s}{\mathrm{d}t}=q'(s)\sqrt{b(s)}

真实加速度

d2qdt2=q(s)(dsdt)2+q(s)d2sdt2=q(s)b(s)+q(s)a(s)\frac{\mathrm{d}^2q}{\mathrm{d}t^2}=q''(s)\left(\frac{\mathrm{d}s}{\mathrm{d}t}\right)^2+q'(s)\frac{\mathrm{d}^2s}{\mathrm{d}t^2}=q''(s)b(s)+q'(s)a(s)

更重要的是,我们仅考虑向前移动的情况,因此b(s)0b(s)\geq0应该严格成立,并仅在某个或某几个瞬间为0。

因此我们将这个简单的TOPP问题描述为:

mina(s),b(s)0<!swig0>1b(s)dss.t.b(s)0,s[0,L],b(s)=2a(s),s[0,L],q(s)b(s)vmax,s[0,L],q(s)b(s)+q(s)a(s)amax,s[0,L],b(0)=b0,b(L)=bL.\begin{aligned} \min_{a(s),b(s)}& \int_{0}^\frac{1}{\sqrt{b(s)}}\mathrm{d}s \\ \mathrm{s.t.}& b(s)\geq0, \forall s\in[0,L], \\ &b'(s)=2a(s), \forall s\in[0,L], \\ &\left\|q^{\prime}(s)\sqrt{b(s)}\right\|_{\infty}\leq v_{max}, \forall s\in[0,L], \\ &\left\|q^{\prime\prime}(s)b(s)+q^{\prime}(s)a(s)\right\|_\infty\leq{a_{max}},\quad\forall s\in[0,L], \\ &b(0)={b_0},b(L)={b_L}. \end{aligned}

将上述问题变为SOCP

17

18

其中是引入一些变量进行一些缩放,将表达形式便形成SOCP的形式。
增加隐变量ck,dkc^k, d^k,满足:

ckbk,1ck+1+ckdkc^k\leq\sqrt{b^k},\quad\frac1{c^{k+1}+c^k}\leq d^k

则通过缩放可以得到1bk+1+bkdk\frac1{\sqrt{b^{k+1}}+\sqrt{b^k}}\leq d^k,以上每步等号都可以取到,则min1bk+1+bk    mindk\min\frac1{\sqrt{b^{k+1}}+\sqrt{b^k}}\iff\min d^k,同时bk,ck,dkb^k, c^k, d^k需要满足上面两个约束,即:

2ck+1+ckdk2ck+1+ck+dk,0kK1,2ckbk12bk+1,0kK.\begin{aligned} \begin{Vmatrix}2\\c^{k+1}+c^k-d^k\end{Vmatrix}_2 &\leq c^{k+1}+c^k+d^k,\quad0\leq k\leq K-1, \\ \begin{Vmatrix}2c^k\\b^k-1\end{Vmatrix}_2 &\leq b^k+1,\quad0\leq k\leq K. \end{aligned}

综上所述TOPP转化SOCP为:

目标函数:

minak,bk,ck,dkk=0K12(sk+1sk)dk\min_{a^k,b^k,c^k,d^k}\sum_{k=0}^{K-1}2(s^{k+1}-s^k)d^k

锥约束:

2ck+1+ckdk2ck+1+ck+dk,0kK1,2ckbk12bk+1,0kK.\begin{aligned} \begin{Vmatrix}2\\c^{k+1}+c^k-d^k\end{Vmatrix}_2 &\leq c^{k+1}+c^k+d^k,\quad0\leq k\leq K-1, \\ \begin{Vmatrix}2c^k\\b^k-1\end{Vmatrix}_2 &\leq b^k+1,\quad0\leq k\leq K. \end{aligned}

等式约束:

2(sk+1sk)ak+bkbk+1=0,(0kK1)q(s0)22b0=vstart2q(sk)22bK=vend2\begin{aligned} &2(s^{k+1}-s^k)a^k+b^k-b^{k+1}=0,(0\leq k\leq K-1) \\ &\left\|q^{\prime}(s^0)\right\|_2^2b^0=v_{start}^2 \\ &\left\|q^{\prime}(s^k)\right\|_2^2b^K=v_{end}^2 \end{aligned}

不等式约束:

bk0,(0kK)((qy(sk))2+(qx(sk))2)bkvmax20,(0kK)qx(sk)bk+qx(sk)akamax0,(0kK1)qy(sk)bk+qy(sk)akamax0,(0kK1)qx(sk)bkqx(sk)akamax0,(0kK1)qy(sk)bkqy(sk)akamax0,(0kK1)\begin{aligned} &-b_k\leq0,(0\leq k\leq K) \\ &\left(\left(q_{y}^{\prime}\left(s^{k}\right)\right)^{2}+\left(q_{x}^{\prime}\left(s^{k}\right)\right)^{2}\right)b^{k}-v_{max}^{2}\leq0,(0\leq k\leq K) \\ &q_x^{\prime\prime}\left(s^k\right)b^k+q_x^{\prime}\left(s^k\right)a^k-a_{max}\leq0,(0\leq k\leq K-1) \\ &q_y^{\prime\prime}(s^k)b^k+q_y^{\prime}(s^k)a^k-a_{max}\leq0,(0\leq k\leq K-1) \\ &-q_x^{\prime\prime}(s^k)b^k-q_x^{\prime}(s^k)a^k-a_{max}\leq0,(0\leq k\leq K-1) \\ &-q_y^{\prime\prime}(s^k)b^k-q_y^{\prime}(s^k)a^k-a_{max}\leq0,(0\leq k\leq K-1) \end{aligned}

作业

作业一:证增广拉格朗日函数是关于xx的凸函数

原问题是一个凸优化问题:

minf(x)s.t.g(x)0h(x)=0\begin{array}{rl}\min&f(x)\\\text{s.t.}&g(x)\leq0\\&h(x)=0\end{array}

则我们可得

  1. f(x)f(x)g(x)g(x)都是凸函数,h(x)h(x)是仿射函数(既凸又凹)。

  1. 凸函数充要条件

f(αx+(1α)y)αf(x)+(1α)f(y),x,ydomf,α(0,1)f\big(\alpha x+(1-\alpha)y\big)\leq\alpha f(x)+(1-\alpha)f(y),\forall x,y\in domf,\alpha\in(0,1)

  1. 凸函数加凸函数还是凸函数。f1fnf_1\ldots f_n为凸函数,wi0w_{i}\geq0f=inwifif=\sum_i^nw_if_i为凸函数。

  2. ffII上的凸函数,ggJ(f(I)J)J(f(I)⊂J)上递增,且凸性相同,gfg◦fII上有相同的凸性。

上述为证明所用到的定理,其中3和4均可由2推导得到。

证:

增广拉格朗日函数为

Lρ(x,λ,μ):=f(x)+ρ2{h(x)+λρ2+max[g(x)+μρ,0]2}12ρ{λ2+μ2}\mathcal{L}_\rho(x,\lambda,\mu):=f(x)+\frac{\rho}{2}\left\{\left\|h(x)+\frac{\lambda}{\rho}\right\|^2+\left\|\max\left[g(x)+\frac{\mu}{\rho},0\right]\right\|^2\right\}-\frac{1}{2\rho}\left\{\|\lambda\|^2+\|\mu\|^2\right\}

其中ρ>0,μ0\rho>0,\mu\succeq0

  • f(x)f(x)为凸函数,12ρ{λ2+μ2}\frac1{2\rho}\big\{\|\lambda\|^2+\|\mu\|^2\big\}xx无关。

  • h(x)+λρ0h(x)+\frac{\lambda}{\rho}\ge 0时,2\left|\left|\cdot\right|\right|^2[0,+][0, +\infty]上单调递增且为凸函数。由定理4我们可得,h(x)+λρ2\left\|h(x)+\frac\lambda\rho\right\|^2为凸函数。

  • 与上同理,易得max[g(x)+μρ,0]\max\left[g(x)+\frac{\mu}{\rho},0\right]为凸函数且max[g(x)+μρ,0]0\max\left[g(x)+\frac{\mu}{\rho},0\right] \ge 02\left|\left|\cdot\right|\right|^2[0,+][0, +\infty]上单调递增且为凸函数。由定理4我们可得,max[g(x)+μρ,0]2\left\|\max\left[g(x)+\frac\mu\rho,0\right]\right\|^2为凸函数。

综上所述,增广拉格朗日函数Lρ(x,λ,μ)\mathcal{L}_\rho(x,\lambda,\mu)是关于xx的凸函数。

作业二:低维半正定的二次规划问题

原问题:

minxRn12xTMQx+cQTx,s.t.AQxbQwhere,MQ0.\begin{gathered} \\ \operatorname*{min}_{x\in\mathbb{R}^{n}}{\frac{1}{2}}x^{\mathrm{T}}M_{\mathcal{Q}}x+c_{\mathcal{Q}}^{\mathrm{T}}x,\mathrm{s.t.}A_{\mathcal{Q}}x\leq b_{\mathcal{Q}} \\ \mathrm{where},M_{\mathcal{Q}}\succeq0. \end{gathered}

这是一个半正定的二次规划问题。

原求解器只能求解严格正定的二次规划问题,所以我们将其构建成一个严格正定的二次规划问题。

给原目标函数加上一个正则项,变为

minxRn12xTMQx+cQTx+12ρxxˉ2\operatorname*{min}_{x\in\mathbb{R}^{n}}{\frac{1}{2}}x^{\mathrm{T}}M_{\mathcal{Q}}x+c_{\mathcal{Q}}^{\mathrm{T}}x+\frac{1}{2\rho}\left\|x-\bar{x}\right\|^2

展开得

minxRn12xTMQx+cQTx+12ρ(xTx+xˉTxˉ2xˉTx)\operatorname*{min}_{x\in\mathbb{R}^{n}}{\frac{1}{2}}x^{\mathrm{T}}M_{\mathcal{Q}}x+c_{\mathcal{Q}}^{\mathrm{T}}x+\frac{1}{2\rho}(x^{\mathrm{T}}x+\bar{x}^{\mathrm{T}}\bar{x}-2\bar{x}^{\mathrm{T}}x)

minxRn12xT(MQ+1ρ)x+(cQ1ρxˉ)Tx+12ρxˉTxˉ\operatorname*{min}_{x\in\mathbb{R}^{n}}{\frac{1}{2}}x^{\mathrm{T}}(M_{\mathcal{Q}}+\frac{1}{\rho})x+(c_{\mathcal{Q}}-\frac{1}{\rho}\bar{x})^{\mathrm{T}}x+\frac{1}{2\rho}\bar{x}^{\mathrm{T}}\bar{x}

这样上述问题就会变成严格正定的二次规划问题

  1. 初始化xˉ\bar{x},给定δ\delta

  2. 求出下列二次规划问题的解xix^*_{i}

minxRn12xT(MQ+1ρ)x+(cQ1ρ)Tx\operatorname*{min}_{x\in\mathbb{R}^{n}}{\frac{1}{2}}x^{\mathrm{T}}(M_{\mathcal{Q}}+\frac{1}{\rho})x+(c_{\mathcal{Q}}-\frac{1}{\rho})^{\mathrm{T}}x

  1. 判断$\left|x-\bar{x}\right|^2 \le \delta $,若满足条件迭代结束;若不满足继续迭代。
  2. xˉxi\bar{x} \gets x^*_{i},转到步骤2。

代码见文件task2所示。

运行

  1. cd chapter04/task2
  2. 编译
  3. 运行可执行文件./sdqp_example

结果如下:

19

作业三:SOCP求解

原问题:

minxRnfTxs.t.Ax+b2cTx+d\begin{aligned} &\min_{x\in\mathbb{R}^{n}} f^{\mathrm{T}}x \\ &\mathrm{s.t.} \left \|{Ax+b}\right \|_2 \leq c^{\mathrm{T}}x+d \end{aligned}

其中

A=[7654321],b=[135791113],c=[1000000],f=[1234567],d=1A=\begin{bmatrix}7&&&&&&&\\&6&&&&&&\\&&5&&&&&\\&&&4&&&&\\&&&&3&&&\\&&&&&2&&\\&&&&&&1\end{bmatrix},b=\begin{bmatrix}1\\3\\5\\7\\9\\11\\13\end{bmatrix},c=\begin{bmatrix}1\\0\\0\\0\\0\\0\\0\end{bmatrix},f=\begin{bmatrix}1\\2\\3\\4\\5\\6\\7\end{bmatrix},d=1

我们构建一个二阶锥

K={(y0,y1)TR×Rn1y0y12}\mathcal{K}=\left\{\left(y_0,y_1\right)^{\mathrm{T}}\in\mathbb{R}\times\mathbb{R}^{n-1}\mid y_0\geq\left\|y_1\right\|_2\right\}

其中y0=cTx+d,y1=Ax+by_0=c^Tx+d,y_1=Ax+b

所以原问题变为:

minxfTx,s.t.Aix+biK\min_xf^Tx,s.t.A_ix+b_i\in \mathcal{K}

其中

Ai=[cTA],bi=[db]A_i=\begin{bmatrix}c^T\\A\end{bmatrix},b_i=\begin{bmatrix}d\\b\end{bmatrix}

根据前文锥的增广拉个朗日函数可得:

Lρ(x,μ)=fTx+ρ2(PK(μρAixbi)2)L_\rho(x,\mu)=f^Tx+\frac{\rho}{2}\left(\left\|P_{\mathcal{K}}(\frac{\mu}{\rho}-A_ix-b_i)\right\|^2\right)

迭代

{xargminxLρ(x,λ,μ)μiPKi(μiρ(Aix+bi))ρmin[(1+γ)ρ, β]\begin{cases}x\leftarrow\operatorname{argmin}_x\mathcal{L}_\rho(x,\lambda,\mu)\\ \mu_i\leftarrow P_{\mathcal{K}_i}\big(\mu_i-\rho(A_ix+b_i)\big)\\\rho\leftarrow\min[(1+\gamma)\rho,~\beta]\end{cases}

其中xargminxLρ(x,λ,μ)x\leftarrow\operatorname{argmin}_x\mathcal{L}_\rho(x,\lambda,\mu)可使用前文的半光滑牛顿方法求得。

具体代码见task3

运行

  1. cd chapter04/task3
  2. 编译
  3. 运行可执行文件./socp_example

结果如下:

20