If there anyone know how to represent this expression in CVX?Only B_k is variable . Thanks advance!
-rel_entr(Bk,Bk+p*hk/N0)/log(2) >= Rmin
In general, x*log(1+y/x)
can be formulated as -rel_entr(x,x+y)
.presuming x
is affine and y
is concave (note that a numerical constant is concave).
Thanks for your help. I am very sorry that there is another problem :is that can achieve in CVX? Only B_k is variable too. And constraint of B_k is :0<=B_k <=B_max(a constant)
You can apply inv_pos
, because it accepts a concave argument.
minimize(Lk*inv_pos(-rel_entr(Bk,Bk+p*hk/N0)/log(2)))
0 <= Bk <= B_max
help inv_pos
inv_pos Reciprocal of a positive quantity.
inv_pos(X) returns 1./X if X is positive, and +Inf otherwise.
X must be real.For matrices and N-D arrays, the function is applied to each element. Disciplined convex programming information: inv_pos is convex and nonincreasing; therefore, when used in CVX specifications, its argument must be concave (or affine).
You may benefit from a careful reading of the CVX Users’ Guide http://cvxr.com/cvx/doc/ , as well as the Mosek Modeling Cookbook https://docs.mosek.com/modeling-cookbook/index.html