如何在cvx中表达log(1+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 ϕ m ′ / σ 2 l m ′ ) \eta_m \leq \gamma_m -\log(1+\sum_{m'=1}^{M}\frac{\phi_{m'}/\sigma^2}{l_{m'}}) ηmγmlog(1+m=1Mlmϕm/σ2)
\log()表达式中,lm是变量,其他是常量。
上述是凸约束,但是无法在cvx中直接表达出来,需要转换;

利用log_sum_inv来转换,引入松弛变量 o m o_m om
得到
o m ≥ log ⁡ ( 1 + ∑ m ′ = 1 M ϕ 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}\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=1Mlmϕ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 ) − 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}})^{-1} ηmγmom,eomsm(x01+x11+...+xM1)1

根据harmonic-mean,上式约束后两项可以写为:
∑ m ′ = 0 M s m 2 x m ′ ≤ s m \sum_{m'=0}^{M}\frac{s_{m}^2}{x_{m'}} \leq s_m m=0Mxmsm2sm

最有,原约束可以转换为:
η m ≤ γ m − o m , e − o m ≤ s m , ∑ m ′ = 0 M s m 2 x m ′ ≤ s m \eta_m \leq \gamma_m - o_m,\\ e^{-o_m} \leq s_m,\\ \sum_{m'=0}^{M}\frac{s_{m}^2}{x_{m'}} \leq s_m ηmγmom,eomsm,m=0Mxmsm2sm


ps: x^2/t在cvx可以用quad_over_lin(x,t)表示,具体可参考cvx工具手册;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值