个人博客Glooow ,欢迎各位老师来踩踩
1. 二阶锥
1.1 二阶锥定义
在此之前,先给出二阶锥 的定义。
在 k k k 维空间中二阶锥 (Second-order cone) 的定义为C k = { [ u t ] ∣ u ∈ R k − 1 , t ∈ R , ∥ u ∥ ≤ t }
\mathcal{C}_{k}=\left\{\left[\begin{array}{l}
{u} \\
{t}
\end{array}\right] | u \in \mathbb{R}^{k-1}, t \in \mathbb{R},\|u\| \leq t\right\}
C k = { [ u t ] ∣ u ∈ R k − 1 , t ∈ R , ∥ u ∥ ≤ t }
其也被称为 quadratic,ice-cream,Lorentz cone。
1.2 二阶锥约束
在此基础上,二阶锥约束 即为∥ A x + b ∥ ≤ c T x + d ⟺ [ A c T ] x + [ b d ] ∈ C k
\|A x+b\| \leq c^{T} x+d \Longleftrightarrow\left[\begin{array}{c}
{A} \\
{c^{T}}
\end{array}\right] x+\left[\begin{array}{l}
{b} \\
{d}
\end{array}\right] \in \mathcal{C}_{k}
∥ A x + b ∥ ≤ c T x + d ⟺ [ A c T ] x + [ b d ] ∈ C k
其中 x ∈ R n , A ∈ R ( k − 1 ) × n , b ∈ R k − 1 , c ∈ R n , R x\in \mathbb{R}^{n}, A\in\mathbb{R}^{(k-1)\times n}, b\in\mathbb{R}^{k-1},c\in\mathbb{R}^{n},\mathbb{R} x ∈ R n , A ∈ R ( k − 1 ) × n , b ∈ R k − 1 , c ∈ R n , R 。实际上是对 x x x 进行了仿射变换,由于仿射变换不改变凹凸性,因此二阶锥也是凸锥。
2. 优化问题建模
优化目标如下,其中 f ∈ R n , A i ∈ R n i × n , b i ∈ R n i , c i ∈ R n , d i ∈ R , F ∈ R p × n , f \in \mathbb{R}^{n}, A_{i} \in \mathbb{R}^{n_{i} \times n}, b_{i} \in \mathbb{R}^{n_{i}}, c_{i} \in \mathbb{R}^{n}, d_{i} \in \mathbb{R}, F \in \mathbb{R}^{p \times n}, f ∈ R n , A i ∈ R n i × n , b i ∈ R n i , c i ∈ R n , d i ∈ R , F ∈ R p × n , and g ∈ R p , x ∈ R n g \in \mathbb{R}^{p}, x \in \mathbb{R}^{n} g ∈ R p , x ∈ R n minize f T x subject to ∥ A i x + b i ∥ 2 ≤ c i T x + d i , i = 1 , … , m F x = g
\begin{aligned}
\text{minize}\quad& f^{T} x\\
\text{subject to}\quad& {\left\|A_{i} x+b_{i}\right\|_{2} \leq c_{i}^{T} x+d_{i}, \quad i=1, \ldots, m}\\
&{F x=g}
\end{aligned}
minize subject to f T x ∥ A i x + b i ∥ 2 ≤ c i T x + d i , i = 1 , … , m F x = g
上述问题被称为二次锥规划 是因为其约束,要求仿射函数 ( A x + b , c T x + d ) (Ax+b,c^T x+d) ( A x + b , c T x + d ) 为 R k + 1 \mathbb{R}^{k+1} R k + 1 空间中的二阶锥。
3. 类似问题转化
一些其他优化问题也可以转化为 SOCP,例如
3.1 二次规划
考虑二次约束x T A T A x + b T x + c ≤ 0
x^{T} A^{T} A x+b^{T} x+c \leq 0
x T A T A x + b T x + c ≤ 0
可以等价转化为 SOC 约束∥ ( 1 + b T x + c ) / 2 A x ∥ 2 ≤ ( 1 − b T x − c ) / 2
\left\|\begin{array}{c}\left(1+b^{T} x+c\right) / 2 \\ Ax\end{array}\right\|_{2}
\leq\left(1-b^{T} x-c\right) / 2
∥ ∥ ∥ ∥ ( 1 + b T x + c ) / 2 A x ∥ ∥ ∥ ∥ 2 ≤ ( 1 − b T x − c ) / 2
3.2 随机线性规划
问题模型为minize c T x subject to P ( a i T x ≤ b i ) ≥ p , i = 1 , … , m
\begin{aligned}
\text{minize}\quad& c^{T} x\\
\text{subject to}\quad& \mathbb{P}\left(a_{i}^{T} x \leq b_{i}\right) \geq p, \quad i=1, \ldots, m
\end{aligned}
minize subject to c T x P ( a i T x ≤ b i ) ≥ p , i = 1 , … , m
问题转化可参考维基百科
4. 问题求解
二阶锥规划可以应用内点法 快速求解,且比半正定规划 (semidefinite programming)更有效。
Matlab 有专门的凸优化工具包,下载地址 在这里,安装教程在官网上有。使用方法如下,只需要修改优化目标和约束条件即可
m = 20; n = 10; p = 4;
A = randn(m,n); b = randn(m,1);
C = randn(p,n); d = randn(p,1); e = rand;
cvx_begin
variable x(n)
minimize( norm( A * x - b, 2 ) )
subject to
C * x == d
norm( x, Inf ) <= e
cvx_end