x, Y is variables, where x is a scaler and Y is a vector. C is a constant vector. The aim of Optimization problem is to maximize sum(x*log(C.*Y/x)), how to express the objective function in CVX? I have proved that the objective function is concave and try it with -rel (x, x + Y. * C) , but failed.

`x*log(C*Y/x) = -rel_entr(x,C*Y)`

The formulation you tried is for `x*log(1+C*Y/x)`

Oh, thank you very much. I left out + 1 in the problem description. Now I understand. But in my problem, C is a vector and Y is a variable vector, so can I describe “sum(x * log (1 + C .*Y/x))” as “-rel (x, x + C.*Y)” in CVX ? Both C and Y are N×1 column vectors

help rel_entr

rel_entr Scalar relative entropy.

rel_entr(X,Y) returns an array of the same size as X+Y with the

relative entropy function applied to each element:

{ X.*LOG(X./Y) if X > 0 & Y > 0,

rel_entr(X,Y) = { 0 if X == 0 & Y >= 0,

{ +Inf otherwise.

X and Y must either be the same size, or one must be a scalar. If X and

Y are vectors, then SUM(rel_entr(X,Y)) returns their relative entropy.

If they are PDFs (that is, if X>=0, Y>=0, SUM(X)==1, SUM(Y)==1) then

this is equal to their Kullback-Liebler divergence SUM(KL_DIV(X,Y)).

-SUM(rel_entr(X,1)) returns the entropy of X.`Disciplined convex programming information: rel_entr(X,Y) is convex in both X and Y, nonmonotonic in X, and nonincreasing in Y. Thus when used in CVX expressions, X must be real and affine and Y must be concave. The use of rel_entr(X,Y) in an objective or constraint will effectively constrain both X and Y to be nonnegative, hence there is no need to add additional constraints X >= 0 or Y >= 0 to enforce this.`