微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在cvx中表达log1+sum(1/x)

许多凸的表达式需要一定的转换才能在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γmlog(1+m=1Mvlmϕ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} omlog(1+m=1Mvlmϕ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γmom,eomsm(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=1Mvxmsm2Mvsm

最有,原约束可以转换为:
η 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γmom,eomsm,m=1Mvxmsm2Mvsm
ps: x^2/t在cvx可以用quad_over_lin(x,t)表示,具体可参考cvx工具手册;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐