I am a newbie to CVX, and am trying to build the following model:
cvx_begin
obj = 0;
variable x(A, B);
variable y(A, B);
variable z(A, B);
for i = 1:A
for j =1:B
obj = obj + x(i, j)
end
end
minimize(obj)
subject to
for i = 1:A
for j = 1:B
{x(i, j), y(i, j), C*log(1+C*z(i, j)) / log(2)} == rotated_lorentz(1);
end
end
....... (other constraints)
.......
cvx_end
However, I get the error message: Disciplined convex programming error:
Invalid constraint: {concave} == {real affine}.
CVX does show that the constraint of my model is concave, but I have no idea why it is, since many posts seems to do similar things.
The error occurs because the 3rd argument on the left-hand side is nonlinear, rather than being affine as required.
Have you proven your model is convex?
Note that your objective can be more simply written as
minimize(sum(sum(x)))
or
minimize(sum(x(:))
Hi Mark,
Actually, the original constraint is sum(ylog(1 + z))>= C, where C is a constant, and I am aware that my formulation may not be convex due to the log and product term. I was trying this model because I see this approach from another paper, which introduces an auxiliary variable x and let sum(ylog(1+z))>=x^2 and x^2>=C, where the first one can be written as a rotated lorentz cone constraint: ||x||<=sqrt(sum(y*log(1+z))).
I appreciate your help and will try to find if there is anything wrong with my formulation.
Possibly try log(1+z)>=C*inv_pos(y)
.
Hi Michal,
Thank you for your suggestion! It works, but I found that my description is not elaborated.
C should be a constant for comparing the summation of y*log(1+z). I feel sorry 
I think you could show us the paper. What you write does not look convex.
Hi Michal,
Here is the paper: https://link.springer.com/article/10.1007/s11036-018-1152-6
This re-formulation is described at page 4 as equation (7a).
Thanks!
Unfortunately I cannot access it behind they paywall. Sorry.
Hi Machal,
Never mind. I came up with a solution by decomposing the original problem and solved them in an alternating fashion. The solution works.
Though I am still not sure if there is better approach to linearize this constraint, I defer this problem to the next stage. I really appreciate your help and suggestion.