I’d like to know whether JuMP automatically converts SOCP into QCP.
Also is one formulation any faster than the other? (I’m using Gurobi)
(a) This constraint is in quadratic form resulting in QCP.
x^2 + y^2 <= z^2 (where z>=0)
(b) The same constraint can be written as SOCP:
norm([x,y]) <= z (where z>=0)
Thank you in advance for any comments.
Re 1) In the “no magic” spirit of JuMP, it will not do any model conversions automatically. You would need to write a QCP or SOCP as you prefer and the solvers will respond accordingly, if they support one or the other.
Re 2) To the best of my knowledge, Gurobi only implements QCQP algorithms and not SOCP algorithms. So under the hood it will be using version (a). The only time I am using version (b) is when I want to target a conic solver like SCS or Mosek. I am not aware of a clear cut result that shows if QCQP or SOCP is faster than the other. My experience is that it depends a lot on the problem data. If you need scalability and numerical accuracy, try solving QCQP with Ipopt+HLS. That is the most numerically robust of all the solvers that I have tried.
Thanks a lot for the information.
It helped me a lot!