I have the following constraint:

1/t <= exp(x)-exp(y)

where t is known to be positive (and x>y).

In its current form, CVX rejects it as the right hand side is not concave (and neither convex).

I perform the following transformation:

log(1/t + exp(y)) <= x

Now, the rhs is concave. I also proved that the lhs is a convex function when t is positive (which is the case here). This can be easily shown using the positive semi definite Hessian test. So technically, the current form of the constraint is convex.

However, CVX rejects it. If I understand correctly, the lhs doesn’t conform to the DCP rule set. Obviously, 1/t should be replaced with the built in inv_pos(t) function which helps CVX understand that 1/t is convex (as it is not convex when t is negative).

However, this doesn’t help much and CVX still rejects the function.

Looking at the CVX composition rules, it seems that composition is useful to show that a convex function stays convex (under certain conditions for its arguments) or a concave function stays concave. Here, log(x) is concave, but I want CVX to realize that log(1/t + exp(y)) is convex.

Does anyone has an idea how to handle this constraint with CVX?

In addition, CVX handles logarithms and exponents using “Successive approximation method” which according to documentation is heuristic. I understand that this is a limitation related to the fact that the underlying solvers (e.g. MOSEK which I’m using) doesn’t support such functions (even when they are convex and DCP). Does anyone knows of a different solver (possibly not supported by CVX) that handles exp and log (as long they are convex)?