Nilanjan
(Nilanjan)
June 27, 2020, 5:42pm
1
Hi,
In my optimization problem, I am getting following error message while solving following constraint:
w + x*(2^(y/x)-1) <= constant
w, x, y are optimization variables. I checked that constraint is convex.
Error message:
Disciplined convex programming error: Cannot perform the operation: {real affine} ./ {real affine}
Please suggest me in this regard.
Nilanjan
1 Like
That constraint is non-convex for x < 0.
Presuming x >= 0, it can be handled using CVX’s exponential cone constraint capability to represent it as an exponential cone constraint,.
The constraint can be rewritten as
x*exp(y/x) <= (constant + x)/log(2)
which can be implemented in CVX as
{y,x,(constant + x)/log(2)} == exponential(1)
Note that although http://cvxr.com/cvx/doc/funcref.html#sets has an entry for exp_cone
, it has to actually be entered using exponential
, as I’ve shown here.
The exponential cone constraint si a powerful construct Learn it. Love it. Use it. And when using it, use Mosek 9.x as solver if you can, otherwise follow the instructions at CVXQUAD: How to use CVXQUAD's Pade Approximant instead of CVX's unreliable Successive Approximation for GP mode, log, exp, entr, rel_entr, kl_div, log_det, det_rootn, exponential cone. CVXQUAD's Quantum (Matrix) Entropy & Matrix Log related functions .