Rotated cone constraint, how to include it?

question

#1

I’ve been trying for a few days to add the following constraint in jump:

@NLconstraint(mod, R[i,j,h]^2 + T[i,j,h]^2 - 2*u_ijk[i,i,j,h]*u_ijk[j,j,i,h]<=0)

I tried every academic solver, but none is able to recognize that it is a rotated cone constraint.
I found ways to declare second order cone constraints (not rotated) that should work with pajarito and Gurobi, yet I didn’t manage to put my constraint in the required form.

Is there a solver that supports this kind of constraints or a standard procedure to reformulate it? having more than 100 of those constraints the difference between a NLconstraint and a conic one is huge (and atm nlsolvers are giving me suboptimal solutions).

Thanks for the help


#2

The commercial MISOCP solvers (Gurobi, CPLEX, and Mosek) will currently accept rotated SOCs in quadratic form:

@constraint(mod, R[i,j,h]^2 + T[i,j,h]^2 - 2*u_ijk[i,i,j,h]*u_ijk[j,j,i,h]<=0)

For other solvers that are expecting plain SOCs, you can manually transform rotated SOCs into SOCs and use JuMP’s norm() syntax.

We’re planning on making it easier to input rotated SOCs in JuMP over the summer.


#3

you are absolutely right, it kept giving me errors on gurobi for the declaration of NLconstraint.
thanks a lot!