这一讲我们将介绍优化问题中的一种典型分类:数学规划(Programming)。

  • 实际上,我们遇到的大多数优化问题都可以被整理成规划问题的形式,而规划问题有多种高效的求解方法。

规划问题(Programming)

线性规划(Linear Programms)

我们从最简单的规划问题,即线性规划开始。

  • 线性规划的目标函数与约束条件均为仿射函数,其标准形式如下(目标函数不考虑常数项): p=minxRncxs.t.Ax=y,x0.\begin{aligned} p^* = \min_{\vec{x} \in \mathbb{R}^n} \quad &\vec{c}^\top \vec{x} \\ \text{s.t.} \quad &A \vec{x} = \vec{y}, \\ & \vec{x} \geq \vec{0}. \end{aligned} 实际上,任意线性规划都可以转化为上述标准形式。具体而言,如果原始线性规划问题:
    • 具有不等式约束,可以引入松弛变量转为等式约束 + 松弛变量非负约束;
    • 存在没有非负约束的变量,可以引入两个非负约束松弛变量,分别表示该变量的正部与负部,这样就可以用这两个松弛变量之差代替。
      简单证明

      例:一种线性规划的常见形式如下:

      p=minxRncxs.t.Axy\begin{aligned} p^* = \min_{\vec{x} \in \mathbb{R}^n} \quad &\vec{c}^\top \vec{x} \\ \text{s.t.} \quad &A \vec{x} \leq \vec{y} \end{aligned}

      可将其转化为标准形式:

      minz(c~)zs.t.Az=y,z0\begin{aligned} \min_{\vec{z}} \quad &(\tilde{\vec{c}})^\top \vec{z} \\ \text{s.t.} \quad &A' \vec{z} = \vec{y}, \\ &\vec{z} \ge \vec{0} \end{aligned}

      其中:

      x=x+x,s=yAxz=(x+xs),c~=(cc0),A=(AAI)\begin{aligned} &\vec{x} = \vec{x}^+ - \vec{x}^-, \quad \vec{s} = \vec{y}-A\vec{x}\\ &\vec{z} = \begin{pmatrix} \vec{x}^+ \\ \vec{x}^- \\ \vec{s} \end{pmatrix},\quad\tilde{\vec{c}} = \begin{pmatrix} \vec{c} \\ -\vec{c} \\ \vec{0} \end{pmatrix},\quad A' = \begin{pmatrix} A & -A & I \end{pmatrix} \end{aligned}
  • 线性规划问题属于凸优化问题,且其可行域一定是凸集。
  • 上述线性规划问题标准形式的对偶问题形式如下: d=maxλRnνRm yνs.t.cλ+Aν=0,λ0.\begin{aligned} d^* = \max_{\substack{\vec{\lambda} \in \mathbb{R}^n\\\vec{\nu} \in \mathbb{R}^m}} \ & -\vec{y}^\top \vec{\nu} \\ \text{s.t.} \quad & \vec{c} - \vec{\lambda} + A^\top \vec{\nu} = \vec{0}, \\ & \vec{\lambda} \geq \vec{0}. \end{aligned} 简单推导如下:原始问题的拉格朗日函数为 L(x,λ,ν)=cxλx+ν(Axy)=(cλ+Aν)xνyL(\vec{x}, \vec{\lambda}, \vec{\nu}) = \vec{c}^\top \vec{x} - \vec{\lambda}^\top \vec{x} + \vec{\nu}^\top (A\vec{x} - \vec{y}) = (\vec{c} - \vec{\lambda} + A^\top \vec{\nu})^\top \vec{x} - \vec{\nu}^\top \vec{y} 因此对偶函数为 g(λ,ν)=minxRn{(cλ+Aν)xνy}=minxRn{(cλ+Aν)x}νy={νy,cλ+Aν=0,,otherwise.\begin{aligned} g(\vec{\lambda}, \vec{\nu}) &= \min_{\vec{x} \in \mathbb{R}^n} \left\{ (\vec{c} - \vec{\lambda} + A^\top \vec{\nu})^\top \vec{x} - \vec{\nu}^\top \vec{y} \right\} \\ &= \min_{\vec{x} \in \mathbb{R}^n} \left\{ (\vec{c} - \vec{\lambda} + A^\top \vec{\nu})^\top \vec{x} \right\} - \vec{\nu}^\top \vec{y} \\ &= \begin{cases} -\vec{\nu}^\top \vec{y}, & \vec{c} - \vec{\lambda} + A^\top \vec{\nu} = \vec{0}, \\ -\infty, & \text{otherwise}. \end{cases} \end{aligned} 只考虑cλ+Aν=0\vec{c} - \vec{\lambda} + A^\top \vec{\nu} = \vec{0}的情形(作为约束条件),就得到上述对偶问题。
  • 线性规划问题有多种方法进行求解。所有带约束的凸优化问题求解方法都可以用于线性规划,其中最常用的方法是内点法(interior method),这会在之后进行介绍。这里我们先介绍线性规划专用的方法:单纯形法。
  • 单纯形法(simplex algorithm)由George Dantzig与1947年提出。其核心思想是:核心思想在于:如果线性规划问题的可行域是有界的,那么其至少存在一个最优解是其可行域的一个“顶点”。
    • 要证明这一论断,我们需要先考察线性规划可行域的结构。定义以下概念:

      • 多面体(polyhedron):空间中有限个半平面的交集。
      • 多边形(polygon):有界的多面体。【也称为多胞形(polytope)】

      由此可知线性规划的可行域属于多面体。以标准形式为例,其可行域可由如下半平面交集构成:

      {xRnaixyi}{xRnaixyi}{xRnxj0}\begin{aligned} &\{\vec{x}\in\R^n\mid \vec{a}_i^\top\vec{x}\leq y_i\}\\ &\{\vec{x}\in\R^n\mid \vec{a}_i^\top\vec{x}\geq y_i\}\\ &\{\vec{x}\in\R^n\mid x_j\geq 0\} \end{aligned}

      其中ai\vec{a}_i^\top为矩阵AA的行向量,yi,xjy_i,x_j分别为y\vec{y}x\vec{x}的分量。

    • 再定义极值点:设集合KRnK\subseteq\R^n,那么如果对于xK\vec{x}\in K,不存在y,zK{x}\vec{y},\vec{z}\in K\setminus\{\vec{x}\}θ[0,1]\theta\in[0,1]使得x=θy+(1θ)z\vec{x}=\theta\vec{y}+(1-\theta)\vec{z},那么就称x\vec{x}为集合KK的极限点。

      • 特别地,当KK为多面体,那么其极值点也被称为多面体的顶点。可以证明,有界多面体只有有限个顶点,且这些顶点构成这个有界多面体的凸包【可参见知乎文章】。
    • 有了这些定义,我们可以得到线性规划的主定理:对于上述线性规划的标准形式,设可行域Ω={xRnAx=y,x0}\Omega=\{\vec{x}\in\R^n\mid A\vec{x}=\vec{y},\vec{x}\geq\vec{0}\}有界(即可行域是有界多面体),那么线性规划的最优值可在其可行域的顶点取到。【注:这并不代表最优值点一定是顶点】

      • 定理证明如下:由上述理论可知Ω\Omega可表示为顶点(向量)的凸包。记其顶点向量为v1,,vk\vec{v}_1,\cdots,\vec{v}_k,那么对任意xΩ\vec{x}\in\Omega,其可表示为顶点向量的凸组合,即 x=i=1kαivi,αi0,i=1kαi=1\vec{x}=\sum_{i=1}^k\alpha_i\vec{v}_i,\quad \alpha_i\geq 0,\sum_{i=1}^k\alpha_i=1 那么线性规划问题就可以改写为 p=minα1,,αkR  i=1kαi(cvi)s.t. αi0,i=1,,k,i=1kαi=1.\begin{aligned} p^* = \min_{\alpha_1, \dots, \alpha_k \in \mathbb{R}} \;&\sum_{i=1}^k \alpha_i (\vec{c}^\top \vec{v}_i) \\ \text{s.t. } \quad& \alpha_i \geq 0,i=1,\cdots,k,\\ & \sum_{i=1}^k \alpha_i = 1. \end{aligned}i=1kαi(cvi)i=1kαi(minj{1,,k}cvj)=(minj{1,,k}cvj)(i=1kαi)=1=minj{1,,k}cvj.\begin{aligned} \sum_{i=1}^k \alpha_i (\vec{c}^\top \vec{v}_i) &\ge \sum_{i=1}^k \alpha_i \left( \min_{j \in \{1, \dots, k\}} \vec{c}^\top \vec{v}_j \right) \\ &= \left( \min_{j \in \{1, \dots, k\}} \vec{c}^\top \vec{v}_j \right) \underbrace{\left( \sum_{i=1}^k \alpha_i \right)}_{=1} \\ &= \min_{j \in \{1, \dots, k\}} \vec{c}^\top \vec{v}_j. \end{aligned} 因此线性规划问题目标函数的最小值一定能在x\vec{x}v1,,vk\vec{v}_1,\cdots,\vec{v}_k中的一个时取到。
    • 根据这一主定理,我们就能得到单纯形法解决线性规划问题的通用步骤(前提是已经转化为标准形式):

      1. 以可行域Ω\Omega的一个顶点v\vec{v}作为初始解;
      2. 如果其存在相邻顶点w\vec{w}满足cw<cv\vec{c}^\top\vec{w}< \vec{c}^\top\vec{v},那么就将v\vec{v}更新为w\vec{w}
      3. 循环上述步骤,直到所有顶点都被搜索完,得到最终最优解v\vec{v}^*

      当然,我们也可以将这种方法推广到无界可行域线性规划问题中,其核心仍然是局部搜索 + 贪心迭代。

二次规划(Quadratic Programs)

顾名思义,二次规划问题的目标函数为二次函数,但约束函数仍然为仿射函数。其标准形式如下:

p=minxRn12xHx+cxs.t.AxyCx=z,\begin{aligned} p^* = \min_{\vec{x} \in \mathbb{R}^n} \quad & \frac{1}{2} \vec{x}^\top H \vec{x} + \vec{c}^\top \vec{x} \\ \text{s.t.} \quad & A \vec{x} \leq \vec{y} \\ & C \vec{x} = \vec{z}, \end{aligned}

其中HSnH\in\mathbb{S}^n

  • 当然,上述标准形式中HH为非对称矩阵时也可以通过以下转换变为对称矩阵: 12xHx=12x(H+H2)x\frac{1}{2} \vec{x}^\top H \vec{x}=\frac{1}{2} \vec{x}^\top\left(\frac{H+H^\top}{2}\right)\vec{x}
  • 二次规划问题不一定是凸优化问题。实际上,二次规划问题称为凸优化问题的充要条件是HS+nH\in\mathbb{S}_+^n,即HH为半正定矩阵。
    • 这实际上很容易理解,因为目标函数的Hessian矩阵就是HH本身,根据二阶凸性条件即得结论。
  • 求解二次规划问题时,方法会随着约束条件具体形式的变化有所不同。下面我们只考虑无约束条件和只有等式约束条件的情形(实际上后者可以通过一定方法转化为前者,可参见知乎文章):
    • 在进行求解之前,需要对HHc\vec{c}进行分类讨论:H∉S+nH\not\in\mathbb{S}_+^nHS+n,cN(H){0}H\in\mathbb{S}_+^n,\vec{c}\in\mathcal{N}(H)\setminus\{\vec{0}\}以及HS+n,cN(H)=R(H)=R(H)H\in\mathbb{S}_+^n,\vec{c}\in\mathcal{N}(H)^\top=\mathcal{R}(H^\top)=\mathcal{R}(H)
    1. H∉S+nH\not\in\mathbb{S}_+^n
      此时HH存在负特征值λ\lambda,设对应的单位特征向量为v\vec{v}。取xt=tv\vec{x}_t=t\vec{v},则有 p12xtHxt+cxt=t22vHv+tcv=t22vλv+tcvλt22+tc2v2=λt22+tc2\begin{aligned} p^*&\leq \frac{1}{2} \vec{x}_t^\top H \vec{x}_t + \vec{c}^\top \vec{x}_t=\frac{t^2}{2} \vec{v}^\top H \vec{v} + t\vec{c}^\top \vec{v}\\ &= \frac{t^2}{2} \vec{v}^\top\lambda \vec{v} + t\vec{c}^\top \vec{v}\leq \frac{\lambda t^2}{2}+t\|\vec{c}\|_2\|\vec{v}\|_2\\ &=\frac{\lambda t^2}{2}+t\|\vec{c}\|_2 \end{aligned} 又因为λ<0\lambda< 0,令tt\to\infty,则pp^*\leq-\infty,故p=p^*=-\infty
    2. HS+n,cN(H){0}H\in\mathbb{S}_+^n,\vec{c}\in\mathcal{N}(H)\setminus\{\vec{0}\}
      由条件可知HH存在零特征值,取其对应的一个特征向量v\vec{v},满足cv0\vec{c}^\top\vec{v}\neq 0。取xt=tsgn(cv)v\vec{x}_t=-t\cdot\text{sgn}(\vec{c}^\top\vec{v})\cdot\vec{v},则有 p12xtHxt+cxt=12t2vHvtsgn(cv)cv=12t2v0tcv=tcv.\begin{aligned} p^* &\le\frac{1}{2} \vec{x}_t^\top H \vec{x}_t + \vec{c}^\top \vec{x}_t =\frac{1}{2} t^2 \vec{v}^\top H \vec{v} - t \cdot \operatorname{sgn}(\vec{c}^\top \vec{v}) \cdot \vec{c}^\top \vec{v} \\ &=\frac{1}{2} t^2 \vec{v}^\top \vec{0} - t \cdot | \vec{c}^\top \vec{v} | =- t \cdot | \vec{c}^\top \vec{v} | . \end{aligned} 同样令tt\to\infty,则pp^*\leq-\infty,故p=p^*=-\infty
    3. HS+n,cR(H)H\in\mathbb{S}_+^n,\vec{c}\in\mathcal{R}(H)
      由条件可知存在x0\vec{x}_0使得c=Hx0\vec{c}=-H\vec{x}_0。那么目标函数可以作如下转换(可以看作配方): 12xHx+cx=12xHxx0Hx=12xHxx0Hx+12x0Hx012x0Hx0=12(xHx2x0Hx+x0Hx0)12x0Hx0=12(xx0)H(xx0)012x0Hx0.\begin{aligned} \frac{1}{2}\vec{x}^\top H\vec{x} + \vec{c}^\top \vec{x} &= \frac{1}{2}\vec{x}^\top H\vec{x} - \vec{x}_0^\top H\vec{x} \\ &= \frac{1}{2}\vec{x}^\top H\vec{x} - \vec{x}_0^\top H\vec{x} + \frac{1}{2}\vec{x}_0^\top H\vec{x}_0 - \frac{1}{2}\vec{x}_0^\top H\vec{x}_0 \\ &= \frac{1}{2}\left(\vec{x}^\top H\vec{x} - 2\vec{x}_0^\top H\vec{x} + \vec{x}_0^\top H\vec{x}_0\right) - \frac{1}{2}\vec{x}_0^\top H\vec{x}_0 \\ &= \frac{1}{2}\underbrace{(\vec{x} - \vec{x}_0)^\top H(\vec{x} - \vec{x}_0)}_{\geq 0} - \frac{1}{2}\vec{x}_0^\top H\vec{x}_0. \end{aligned} 由此可知要使目标函数取最小值,需要让xx0N(H)\vec{x}-\vec{x}_0\in\mathcal{N}(H),即xx0+N(H)\vec{x}\in\vec{x}_0+\mathcal{N}(H)
      • 满足这一条件的解不止一个,其中最典型的一种解是x=Hc\vec{x}=-H^\dag\vec{c},其中HH^\dag表示HH的M-P逆。【关于M-P逆的性质可见知乎文章该补补高代了~
  • 二次规划对偶问题的分类讨论与上面类似,我们给出最终的对偶问题的形式(推导留给读者): d=maxλ,μ12(c+Aλ+Cμ)H(c+Aλ+Cμ)yλzμs.t.λ0,c+Aλ+CμR(H).\begin{aligned} d^* = \max_{\lambda,\mu} \quad & -\frac{1}{2} \bigl(c + A^\top \lambda + C^\top \mu\bigr)^\top H^\dagger \bigl(c + A^\top \lambda + C^\top \mu\bigr) - y^\top \lambda - z^\top \mu \\ \text{s.t.} \quad & \lambda \ge 0, \\ & c + A^\top \lambda + C^\top \mu \in \mathcal{R}(H). \end{aligned}

二次约束二次规划(QCQP)

同样顾名思义,QCQP问题的目标函数为二次函数,且约束条件也为二次不等式。其标准形式如下:

p=minxRn12xHx+cxs.t.12xPix+bix+ci0,i=1,,m12xQix+dix+fi=0,i=1,,p\begin{aligned} p^* = \min_{\vec{x} \in \mathbb{R}^n} \quad & \frac{1}{2} \vec{x}^\top H \vec{x} + c^\top \vec{x} \notag \\ \text{s.t.} \quad & \frac{1}{2} \vec{x}^\top P_i \vec{x} + b_i^\top \vec{x} + c_i \leq 0, \quad i=1,\cdots,m \\ & \frac{1}{2} \vec{x}^\top Q_i \vec{x} + d_i^\top \vec{x} + f_i = 0, \quad i=1,\cdots,p \\ \end{aligned}

其中H,P1,,Pm,Q1,,QpSnH, P_1,\cdots,P_m, Q_1,\cdots,Q_p \in \mathbb{S}^n

  • 如果H,P1,,PmS+nH, P_1,\cdots,P_m\in\mathbb{S}_+^nQ1==Qp=0Q_1=\cdots=Q_p=\mathbf{0},那么这个问题就是凸优化问题。

QCQP的求解方法不详细展开,具体可参考知乎文章这次引用的知乎文章有点多ww~

二阶锥规划(SOCP)

下面我们将介绍一类更广泛的规划问题:二阶锥规划(second-order cone programs)。事实上,上述线性规划与凸二次规划都可以看作二阶锥规划的特殊情况。

  • 二阶锥规划的目标函数为仿射函数,而约束是一个“二阶锥”条件,即决策变量的仿射函数约束在一个二阶锥中。其标准形式如下: p=minxRncxs.t.Aixyi2bix+zi,i=1,,m.\begin{aligned} p^* = \min_{\vec{x} \in \mathbb{R}^n} \quad&\vec{c}^\top \vec{x}\\ \quad \text{s.t.} \quad &\| A_i \vec{x} - \vec{y}_i \|_2 \leq \vec{b}_i^\top \vec{x} + z_i,\quad i=1,\cdots,m. \end{aligned} 其中AiRdi×n,yiRdi,biRn,ziRA_i\in\R^{d_i\times n},\vec{y}_i\in\R^{d_i},\vec{b}_i\in\R^n,z_i\in\R
    • 由此可见,二阶锥约束严格包含所有仿射约束。(只需要Ai=0,yi=0A_i=\mathbf{0},\vec{y}_i=\vec{0}bi=0,zi=0\vec{b}_i=\vec{0},z_i=0即可)
  • 二阶锥规划一定是凸优化问题。实际上,二阶锥规划的可行域可看作一个二阶锥的仿射变换,因而一定是凸集。
  • 下面我们尝试将凸QCQP问题转化为二阶锥规划问题(这样就能证明二阶锥规划问题包含凸QCQP,进而包含LP和凸QP):考虑下述凸QCQP形式 p=minxRn12xHx+cxs.t.12xPix+bix+ci0,i=1,,mCx=z.\begin{aligned} p^* = \min_{\vec{x} \in \mathbb{R}^n} \quad & \frac{1}{2} \vec{x}^\top H \vec{x} + \vec{c}^\top \vec{x} \\ \text{s.t.} \quad & \frac{1}{2} \vec{x}^\top P_i \vec{x} + b_i^\top \vec{x} + c_i \leq 0, \quad i=1,\cdots,m \\ & C \vec{x} = \vec{z}. \end{aligned} 其中H,P1,,PmS+nH, P_1,\cdots,P_m\in\mathbb{S}_+^n
    • 首先使用上境图重述,将目标函数转为仿射函数: p=minxRntRt+cxs.t.12xPix+bix+ci0,i=1,,m12xHxt,Cx=z.\begin{aligned} p^* = \min_{\substack{\vec{x} \in \mathbb{R}^n\\ t \in \mathbb{R}}} \quad & t + \vec{c}^\top \vec{x} \\ \text{s.t.} \quad & \frac{1}{2} \vec{x}^\top P_i \vec{x} + b_i^\top \vec{x} + c_i \leq 0,\quad i=1,\cdots,m\\ & \frac{1}{2} \vec{x}^\top H \vec{x} \leq t, \\ & C \vec{x} = \vec{z}. \end{aligned}
    • 然后将第一个约束条件转为二阶锥条件: 12xPix+bix+ci0xPix+2(bix+ci)0Pi1/2x22+(12+bix+ci)2(12bixci)20Pi1/2x22+(12+bix+ci)2(12bixci)2[Pi1/2x12+bix+ci]212bixci.\begin{aligned} &\frac{1}{2} \vec{x}^\top P_i \vec{x} + b_i^\top \vec{x} + c_i \leq 0\\ \Longrightarrow &\vec{x}^\top P_i \vec{x}+2(b_i^\top \vec{x} + c_i)\leq 0\\ \Longrightarrow&\left\| P_i^{1/2} \vec{x} \right\|_2^2 + \left( \frac{1}{2} + \vec{b}_i^\top \vec{x} + c_i \right)^2 - \left( \frac{1}{2} - \vec{b}_i^\top \vec{x} - c_i \right)^2 \leq 0\\ \Longrightarrow&\left\| P_i^{1/2} \vec{x} \right\|_2^2 + \left( \frac{1}{2} + \vec{b}_i^\top \vec{x} + c_i \right)^2 \leq \left( \frac{1}{2} - \vec{b}_i^\top \vec{x} - c_i \right)^2\\ \Longrightarrow&\left\| \begin{bmatrix} P_i^{1/2} \vec{x} \\ \frac{1}{2} + \vec{b}_i^\top \vec{x} + c_i \end{bmatrix} \right\|_2 \leq \frac{1}{2} - \vec{b}_i^\top \vec{x} - c_i. \end{aligned} 其中最后一次转换右式大于00的推导: bix+ci12xPix1212bixci0.b_i^\top \vec{x} + c_i\leq-\frac{1}{2} \vec{x}^\top P_i \vec{x}\leq\frac{1}{2}\Longrightarrow \frac{1}{2} - \vec{b}_i^\top \vec{x} - c_i\geq 0.
    • 第二个约束条件转换类似,最终得到转换后的SOCP问题: p=minxRnt+cxs.t.[Pi1/2x12+bix+ci]212bixci,i=1,,m[H1/2x12t]212+tCxz20.\begin{aligned} p^* = \min_{\vec{x} \in \mathbb{R}^n} \quad & t + \vec{c}^\top \vec{x} \\ \text{s.t.} \quad & \left\| \begin{bmatrix} P_i^{1/2} \vec{x} \\ \frac{1}{2} + b_i^\top \vec{x} + c_i \end{bmatrix} \right\|_2 \leq \frac{1}{2} - \vec{b}_i^\top \vec{x} - c_i, \quad i=1,\cdots,m \\ & \left\| \begin{bmatrix} H^{1/2} \vec{x} \\ \frac{1}{2} - t \end{bmatrix} \right\|_2 \leq \frac{1}{2} + t \\ & \| C \vec{x} - \vec{z} \|_2 \leq 0. \end{aligned}
  • 二阶锥规划还有一个重要的定理:SOCP的对偶问题仍然是SOCP。以上述SOCP标准形式为例,我们尝试将其对偶问题转化为SOCP标准形式。
    • 这里我们使用锥对偶性进行推导:设Ki{(u,r)Rdi×Ru2r}K_i\coloneqq\{(\vec{u},r)\in\R^{d_i}\times\R\mid\|\vec{u}\|_2\leq r\}Rdi+1\R^{d_i+1}中的一个二阶锥,并记d=i=1mdi\displaystyle d=\sum_{i=1}^md_i,那么上述SOCP标准形式可以转化为 minxRncxs.t.(Aixyi,  bix+zi)Ki0,i=1,,m.\begin{aligned} \min_{\vec{x} \in \mathbb{R}^n} \quad & \vec{c}^\top \vec{x} \\ \text{s.t.} \quad & -(A_i \vec{x} - \vec{y}_i,\; \vec{b}_i^\top \vec{x} + z_i) \preceq_{K_i} \vec{0}, \quad i=1,\cdots,m. \end{aligned} 由此我们可以得到拉格朗日函数 L(x,λ,μ)=cxi=1m[λi(Aixyi)+μi(bix+zi)]=(ci=1m(Aiλi+μibi))x+i=1m(λiyiμizi).\begin{aligned} L(\vec{x}, \vec{\lambda}, \vec{\mu}) &= \vec{c}^\top \vec{x} - \sum_{i=1}^m \left[ \vec{\lambda}_i^\top (A_i \vec{x} - \vec{y}_i) + \mu_i (\vec{b}_i^\top \vec{x} + z_i) \right] \\ &= \left( \vec{c} - \sum_{i=1}^m (A_i^\top \vec{\lambda}_i + \mu_i \vec{b}_i) \right)^\top \vec{x} + \sum_{i=1}^m (\vec{\lambda}_i^\top \vec{y}_i - \mu_i z_i). \end{aligned} 其中λ=(λ1,,λm)Rd,λiRdi,μRm\vec{\lambda}=(\vec{\lambda}_1,\cdots,\vec{\lambda}_m)\in\R^d,\vec{\lambda}_i\in\R^{d_i},\vec{\mu}\in\R^m。然后我们就能得到对偶函数 g(λ,μ)=minxRnL(x,λ,μ)={i=1m(λiyiμizi),if i=1m(Aiλi+μibi)=c,,otherwise.\begin{aligned} g(\vec{\lambda}, \vec{\mu}) &= \min_{\vec{x} \in \mathbb{R}^n} L(\vec{x}, \vec{\lambda}, \vec{\mu}) \\ &= \begin{cases} \displaystyle\sum_{i=1}^m (\vec{\lambda}_i^\top \vec{y}_i - \mu_i z_i), & \text{if } \displaystyle\sum_{i=1}^m (A_i^\top \vec{\lambda}_i + \mu_i \vec{b}_i) = \vec{c}, \\ -\infty, & \text{otherwise}. \end{cases} \end{aligned} 进而得到对偶问题 maxλRdμRmi=1m(λiyiμizi)s.t.i=1m(Aiλi+μibi)=c,(λi,μi)Ki0,i=1,,m.\begin{aligned} \max_{\substack{\vec{\lambda} \in \mathbb{R}^d\\ \vec{\mu} \in \mathbb{R}^m}} \quad & \sum_{i=1}^m (\vec{\lambda}_i^\top \vec{y}_i - \mu_i z_i) \\ \text{s.t.} \quad & \sum_{i=1}^m (A_i^\top \vec{\lambda}_i + \mu_i \vec{b}_i) = \vec{c}, \\ & (\vec{\lambda}_i, \mu_i) \succeq_{K_i} 0, \quad i=1,\cdots,m. \end{aligned} 其中最后一个约束条件利用了KiK_i的对偶锥为其自身的性质。将其改写为SOCP标准形式可得: maxλRdμRmi=1m(λiyiμizi)s.t.i=1m(Aiλi+μibi)c20,λi2μi,i=1,,m.\begin{aligned} \max_{\substack{\vec{\lambda} \in \mathbb{R}^d\\\vec{\mu} \in \mathbb{R}^m}} \quad & \sum_{i=1}^m (\vec{\lambda}_i^\top \vec{y}_i - \mu_i z_i) \\ \text{s.t.} \quad & \left\| \sum_{i=1}^m (A_i^\top \vec{\lambda}_i + \mu_i \vec{b}_i) - \vec{c} \right\|_2 \leq 0, \\ & \left\| \vec{\lambda}_i \right\|_2 \leq \mu_i, \quad i=1,\cdots,m. \end{aligned}

    当然也可以不使用锥对偶直接进行推导,但这样比较复杂,这里就不赘述了。

  • SOCP问题一般使用内点法进行求解,这在之后会进行详细阐述。

半正定规划(SDP)

接下来我们在二阶锥的基础上进一步推广,得到本讲所讨论的最广义的规划问题:半正定规划(Semidefinite Programming)。

注:在下面的表述中,我们将沿用之前二阶凸性条件中使用的\succeq\preceq表示半正(负)定矩阵。

  • 半正定规划的不等式形式如下: minxRncxs.t.F0+i=1nxiFi0.\begin{aligned} \min_{\vec{x} \in \mathbb{R}^n} \quad & \vec{c}^\top \vec{x} \\ \text{s.t.} \quad & F_0 + \sum_{i=1}^n x_i F_i \preceq 0. \end{aligned} 其中cRn,F0,F1,,FnSd\vec{c} \in \mathbb{R}^n,\,F_0, F_1, \dots, F_n \in\mathbb{S}^d。这一约束条件也被称为线性矩阵不等式,而对应的可行域也被称为谱多面体(spectrahedron)。
    • 实际上,如果半正定规划有多条线性矩阵不等式约束,它们可以合并为一个约束条件。【只需要将各个对应FF矩阵合并为一个准对角矩阵即可】
  • 半正定规划还有如下标准形式: minXSntr(CX)s.t.tr(AkX)=bk,k=1,,mX0.\begin{aligned} \min_{X \in \mathbb{S}^n} \quad & \operatorname{tr}(CX) \\ \text{s.t.} \quad & \operatorname{tr}(A_k X) = b_k, \quad k=1,\cdots,m \\ & X \succeq 0. \end{aligned} 其中C,A1,,AmSnC, A_1, \ldots, A_m \in \mathbb{S}^n,且b1,,bmRb_1, \ldots, b_m \in \mathbb{R}
  • 下面我们证明这两种形式之间可以相互转化:
    1. 不等式形式\Longrightarrow标准形式
      首先我们引入一个“松弛”矩阵YSdY\in\mathbb{S}^d,将不等式形式转换为 minxRnYSdcxs.t.Y+F0+i=1nxiFi=0,Y0.\begin{aligned} \min_{\substack{\vec{x} \in \mathbb{R}^n \\ Y \in \mathbb{S}^d}} \quad & \vec{c}^\top \vec{x} \\ \text{s.t.} \quad& Y + F_0 + \sum_{i=1}^n x_i F_i = 0, \\ & Y \succeq 0. \end{aligned} 将第一个约束条件中的矩阵分解为单个元素,得到 Yjk+(F0)jk+i=1nxi(Fi)jk=0,j,k=1,,dY_{jk} + (F_0)_{jk} + \sum_{i=1}^n x_i (F_i)_{jk} = 0, \quad j, k = 1, \cdots, d 一个直接的想法是将x\vec{x}元素直接转化为对角矩阵,但这无法得到的矩阵是正定的。因此我们考虑引入x\vec{x}的正部x+\vec{x}^+与负部x\vec{x}^-,其分量定义如下: xi+={xi,xi>00,xi0,xi={0,xi>0xi,xi0,i=1,,nx_i^+=\begin{cases} x_i,&x_i>0\\ 0,&x_i\leq 0 \end{cases},\quad x_i^-=\begin{cases} 0,&x_i>0\\ -x_i,&x_i\leq 0 \end{cases},\quad i=1,\cdots,n 那么上述形式可进一步转换为 minx+Rnc(x+x)s.t.Yjk+(F0)jk+i=1n(xi+xi)(Fi)jk=0,j,k=1,,d,xi+0,i=1,,n,xi0,i=1,,n,Y0.\begin{aligned} \min_{\vec{x}^+ \in \mathbb{R}^n} \quad & \vec{c}^\top (\vec{x}^+ - \vec{x}^-) \\ \text{s.t.} \quad & Y_{jk} + (F_0)_{jk} + \sum_{i=1}^n (x_i^+ - x_i^-)(F_i)_{jk} = 0, \qquad j,k=1,\cdots,d, \\ & x_i^+ \geq 0, \qquad i=1,\cdots,n, \\ & x_i^- \geq 0, \qquad i=1,\cdots,n, \\ & Y \succeq 0. \end{aligned} 这样我们就可以构造正定准对角矩阵: Z[diag(x+)diag(x)Y]S2n+d.Z \coloneqq \begin{bmatrix} \text{diag}(\vec{x}^+) & & \\ & \text{diag}(\vec{x}^-) & \\ & & Y \end{bmatrix} \in\mathbb{S}^{2n+d}. 其中diag()\text{diag}(\cdot)表示将向量元素作为对角线元素的对角矩阵。以ZZ作为决策变量(矩阵),那么原形式可表示为 minZS2n+di=1nci(Z1,iZ2,i)s.t.Z3,jk+(F0)jk+i=1n(Z1,iZ2,i)(Fi)jk=0,Zi,j=0,(i,j)O,Z0.\begin{aligned} \min_{Z \in \mathbb{S}^{2n+d}} \quad & \sum_{i=1}^n c_i (Z^{1,i} - Z^{2,i}) \\ \text{s.t.} \quad & Z^{3,jk} + (F_0)_{jk} + \sum_{i=1}^n (Z^{1,i} - Z^{2,i})(F_i)_{jk} = 0, \\ & Z_{i,j} = 0, \quad \forall (i,j) \in \mathcal{O}, \\ & Z \succeq 0. \end{aligned} 其中Z1,iZ^{1,i}Z2,iZ^{2,i}分别表示x+\vec{x}^+x\vec{x}^-的第ii个元素,Z3,jkZ^{3,jk}表示YY(i,j)(i,j)位置元素,O\mathcal{O}表示除左上2n×2n2n\times 2n对角线元素和右下d×dd\times d元素之外的其他指标。
      由此可知,目标函数可用tr(CZ)\text{tr}(CZ)表示,而又因为前两个约束条件都是仿射函数,所以可以用tr(AkZ)=bk\text{tr}(A_kZ)=b_k表示(k=1,,d2+Ok=1,\cdots,d^2+|\mathcal{O}|

      注:这里的AkA_k在原始的仿射函数定义中不一定是对称矩阵,但因为

      tr(AkZ)=tr(ZAk)=tr(AkZ)=tr((Ak+Ak)Z2)\text{tr}(A_kZ)=\text{tr}(Z^\top A_k^\top)=\text{tr}(A_k^\top Z)=\text{tr}\left(\dfrac{(A_k+A_k^\top)Z}{2}\right)

      我们可以将其转换为对称矩阵Ak+Ak2\dfrac{A_k+A_k^\top}{2}

    2. 标准形式\Longrightarrow不等式形式
      这里我们需要引入一个从矩阵展平到向量的函数vec:Rm×nRmn\text{vec}:\R^{m\times n}\to\R^{mn}。基于这个函数,我们有 tr(CX)=vec(C)vec(X),tr(AkX)=vec(Ak)vec(X)\text{tr}(CX)=\text{vec}(C)^\top\text{vec}(X),\quad \text{tr}(A_kX)=\text{vec}(A_k)^\top\text{vec}(X) 那么目标函数就可以转化为cx\vec{c}^\top\vec{x},其中c=vec(C),x=vec(X)\vec{c}=\text{vec}(C),\vec{x}=\text{vec}(X);第一个约束条件则可以转化为akx=bk\vec{a_k}^\top\vec{x}=b_k,其中ak=vec(Ak)\vec{a_k}=\text{vec}(A_k)
      下面我们需要再将约束条件转化为线性矩阵不等式。对于前mm个约束条件,其转换相对容易: akx=bk    i=1mxi(ak)i=bk    bk+i=1mxi(ak)i=0    bk+i=1mxi(αk)i0(bk+i=1mxi(αk)i)0,\begin{aligned} \vec{a}_k^\top \vec{x} = b_k &\iff \sum_{i=1}^m x_i (\vec{a}_k)_i = b_k \\ &\iff -b_k + \sum_{i=1}^m x_i (\vec{a}_k)_i = 0 \\ &\iff -b_k + \sum_{i=1}^m x_i (\vec{\alpha}_k)_i \preceq 0 \quad\text{且}\quad-\left( -b_k + \sum_{i=1}^m x_i (\vec{\alpha}_k)_i \right) \preceq 0, \end{aligned} 其中(ak)i(\vec{a}_k)_i可看作一个1×11\times 1矩阵。
      对于最后一个约束条件X0X\succeq 0,它的转换就麻烦一些。我们直接给出最后的结果: X0    (i=1nxi,iEii+12i=1nj=1jinxi,j(Eij+Eji))0X \succeq 0 \iff -\left( \sum_{i=1}^n x_{i,i} E_{ii} + \frac{1}{2} \sum_{i=1}^n \sum_{\substack{j=1 \\ j \neq i}}^n x_{i,j} (E_{ij} + E_{ji}) \right) \preceq 0 其中EijE_{ij}表示只有(i,j)(i,j)元素为11,其余位置元素均为00的矩阵,xi,jx_{i,j}表示矩阵XX(i,j)(i,j)位置对应元素。
      综上,我们只需要将所有线性矩阵不等式合并为一个,就得到最终的SDP不等式形式。
  • 与二阶锥规划一样,半正定规划的对偶问题也是其自身。【证明略,留给读者】
  • 下面我们再尝试将二阶锥规划问题转化为半正定规划问题:
    • 在推导之前,我们先给出如下引理:设(x,t)Rm+1(\vec{x},t)\in\R^{m+1},则有 x2t    [tIxxt]0.\|\vec{x}\|_2 \leq t \iff \begin{bmatrix} tI & \vec{x} \\ \vec{x}^\top & t \end{bmatrix} \succeq 0. 其证明如下: [tIxxt]0    [ab][tIxxt][ab]=t(a22+b2)+2bax0,(a,b)Rm+1.\begin{aligned} \begin{bmatrix} tI & \vec{x} \\ \vec{x}^\top & t \end{bmatrix} \succeq 0 &\iff \begin{bmatrix} \vec{a} \\ b \end{bmatrix}^\top \begin{bmatrix} tI & \vec{x} \\ \vec{x}^\top & t \end{bmatrix} \begin{bmatrix} \vec{a} \\ b \end{bmatrix} =t \left( \|\vec{a}\|_2^2 + b^2 \right) + 2b\vec{a}^\top \vec{x} \geq 0, \quad \forall (\vec{a}, b) \in \mathbb{R}^{m+1}. \end{aligned} 又由柯西-施瓦茨不等式与均值不等式: t(a22+b2)+2baxt(a22+b2)2ba2x22ba2(tx2)t\left(\|\vec{a}\|_2^2 + b^2\right) + 2b\vec{a}^\top \vec{x}\ge t\left(\|\vec{a}\|_2^2 + b^2\right) - 2|b|\,\|\vec{a}\|_2\,\|\vec{x}\|_2\ge 2|b|\,\|\vec{a}\|_2 \left(t - \|\vec{x}\|_2\right) 其中第一个不等号在a=Kx\vec{a}=-K\vec{x}K>0K>0)时取等,第二个不等号在a2=b\|\vec{a}\|_2=b时取等。又因为a,b\vec{a},b的任意性,可得 [tIxxt]0    2ba2(tx2)0(a,b)Rm+1    tx20.\begin{aligned} \begin{bmatrix} tI & \vec{x} \\ \vec{x}^\top & t \end{bmatrix} \succeq 0 &\iff 2|b|\,\|\vec{a}\|_2 \left(t - \|\vec{x}\|_2\right)\ge 0\quad \forall (\vec{a}, b) \in \mathbb{R}^{m+1}\\ &\iff t - \|\vec{x}\|_2\ge 0. \end{aligned} 从而引理得证。
    • 现在考虑SOCP问题的标准形式(见上),设KdK^dRd\R^d里的一个二阶锥。那么约束条件可以作如下转换: Aixyi2bix+zi    (Aixyi,  bix+zi)Kdi+1    [(bix+zi)IAixyi(Aixyi)bix+zi]0    [ziIyiyizi]+j=1nxj[(bi)jI(Ai)j(Ai)j(bi)j]0\begin{aligned} \|A_i \vec{x} - \vec{y}_i\|_2 \leq b_i^\top \vec{x} + z_i &\iff (A_i \vec{x} - \vec{y}_i,\; b_i^\top \vec{x} + z_i) \in K^{d_i+1}\\ &\iff \begin{bmatrix} (b_i^\top \vec{x} + z_i)I & A_i \vec{x} - \vec{y}_i \\ (A_i \vec{x} - \vec{y}_i)^\top & b_i^\top \vec{x} + z_i \end{bmatrix} \succeq 0 \\ &\iff \begin{bmatrix} z_i I & -\vec{y}_i \\ -\vec{y}_i^\top & z_i \end{bmatrix} + \sum_{j=1}^n x_j \begin{bmatrix} (b_i)_j I & (A_i)_j \\ (A_i)_j^\top & (b_i)_j \end{bmatrix} \succeq 0 \end{aligned} 这样我们就能将约束条件转换为线性矩阵不等式。

注:半正定规划计算复杂度往往较高,一般难以用于解决大规模问题。

  • 最后,我们将上述讨论的所有规划问题之间的包含关系梳理如下,作为本讲的结尾: 线性规划凸二次规划凸QCQP二阶锥规划半正定规划凸优化问题\text{线性规划} \subset \text{凸二次规划} \subset \text{凸QCQP} \subset \text{二阶锥规划} \subset \text{半正定规划} \subset \text{凸优化问题}