许多凸的表达式需要一定的转换才能在cvx中写出来,现在主要记录log(1+sum(1/x))
通过转换,如何在cvx中表示出来;
参考资料:cvx论坛; mosek工具手册(5.2.7);mosek工具手册-harmonic mean(3.2.7)
原约束:
η
m
≤
γ
m
−
log
(
1
+
∑
m
′
=
1
M
v
ϕ
m
′
/
σ
2
l
m
′
)
\eta_m \leq \gamma_m -\log(1+\sum_{m'=1}^{M_v}\frac{\phi_{m'}/\sigma^2}{l_{m'}})
ηm≤γm−log(1+m′=1∑Mvlm′ϕm′/σ2)\log()
表达式中,lm
是变量,其他是常量。
上述是凸约束,但是无法在cvx中直接表达出来,需要转换;
利用log_sum_inv
来转换,引入松弛变量
o
m
o_m
om
得到
o
m
≥
log
(
1
+
∑
m
′
=
1
M
v
ϕ
m
′
/
σ
2
l
m
′
)
,
x
0
=
1
,
x
1
=
l
1
ϕ
1
/
σ
2
,
.
.
.
,
x
m
′
=
l
m
′
ϕ
m
′
/
σ
2
o_m \geq \log(1+\sum_{m'=1}^{M_v}\frac{\phi_{m'}/\sigma^2}{l_{m'}}),\\ x_0 = 1,x_1 = \frac{l_1}{\phi_1/\sigma^2},...,x_{m'} = \frac{l_{m'}}{\phi_{m'}/\sigma^2}
om≥log(1+m′=1∑Mvlm′ϕm′/σ2),x0=1,x1=ϕ1/σ2l1,...,xm′=ϕm′/σ2lm′
因此,原约束可以重写为:
η
m
≤
γ
m
−
o
m
,
e
−
o
m
≤
s
m
≤
(
1
x
0
+
1
x
1
+
.
.
.
+
1
x
M
v
)
−
1
\eta_m \leq \gamma_m - o_m,\\ e^{-o_m} \leq s_m \leq (\frac{1}{x_0}+\frac{1}{x_1}+...+\frac{1}{x_{M_v}})^{-1}
ηm≤γm−om,e−om≤sm≤(x01+x11+...+xMv1)−1
根据harmonic-mean
,上式约束后两项可以写为:
∑
m
′
=
1
M
v
s
m
′
2
x
m
′
≤
M
v
s
m
\sum_{m'=1}^{M_v}\frac{s_{m'}^2}{x_{m'}} \leq M_v s_m
m′=1∑Mvxm′sm′2≤Mvsm
最有,原约束可以转换为:
η
m
≤
γ
m
−
o
m
,
e
−
o
m
≤
s
m
,
∑
m
′
=
1
M
v
s
m
′
2
x
m
′
≤
M
v
s
m
\eta_m \leq \gamma_m - o_m,\\ e^{-o_m} \leq s_m,\\ \sum_{m'=1}^{M_v}\frac{s_{m'}^2}{x_{m'}} \leq M_v s_m
ηm≤γm−om,e−om≤sm,m′=1∑Mvxm′sm′2≤Mvsm
ps: x^2/t
在cvx可以用quad_over_lin(x,t)
表示,具体可参考cvx工具手册;