Inv_pos(norm..)

Hello,

Merry Christmas and happy new year to everyone…

Please, suppose I have the following optimization problem, with x being a matrix variable and y being a scaller variable,

maximize f(x,y)
x(2,2), y
subject to
1/norm(xx(2,:)-xx(1,:))+norm(xx(2,:)-xx(1,:))^3<=y;

for which I used the following CVX code,
variables x(2,2) y
maximize f(x)
subject to
inv_pos(norm(xx(2,:)-xx(1,:)))+pow_pos(norm(xx(2,:)-xx(1,:)),3)<=y;

However, CVX is not accepting the part inv_pos(norm(xx(2,:)-xx(1,:))) of the above constraint saying “Disciplined convex programming error: Illegal operation: pow_p( {convex}, {-1} )”. Please, is there a way to represent this part to make it acceptable by CVX?

Many thanks

Ali

I believe that is non-convex.

OK, thank you. I just tried using a slack variable z to represent the norm. I think it becomes convex and CVX accepted the form but it changed the behavior.

1/z+z^3<=y
z>=norm(xx(2,:)-xx(1,:))

Ali

Well, that is convex and CVX will accept it, but that is a different problem than you originally specified, and the optimal solution may not be the same.

If you really want to solve the original problem, I suggest you use a non-convex solver, for instance under YALMIP.

Thanks a lot. I’ll give it a try.

Ali