# How to deal the constraint which include 1/log2(1+x))

My optimization problem has this kind of convex constraint:

x + y + 1/log2(1+z) <= D, where D is a fixed value, the variables to be optimized are x, y and z.

Obviously, this constraint is a convex one. But how can I deal with the 1/log2(1+x) part in CVX tool box in MATLAB? It looks a bit hard.

Further, if the constraint is x + y +\sum{1/log2(1+z_i)} <= t, where z contains i number of values, and the x, y, z_i, t are all variables which to be optimized, how can I deal with it?

Thanks to everyone who gave me advice！

That constraint is only convex for z >= 0 .

However,
x + y + inv_pos(log(1+z)/log(2)) <= D will be accepted by CVX. This formulation essentially constrains z >= 0, where it is convex.

The formulation:
x + y + sum(inv_pos(log(1+z)/log(2))) <= D
will work, whether z is a scalar or a vector, constraining each element of z to be >= 0, and will accomplish your intent.

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).