Just to confirming how RotatedSecondOrderCone() object transforms x^2 + y^2 <= wz as particular JuMP syntax
@constraint(model, [w, z, sqrt(2)x, sqrt(2)y] in RotatedSecondOrderCone())
OR
@constraint(model, [w/2, z/2, x, y] in RotatedSecondOrderCone())
However, I am still confused with (1) and (2) when x^2 + y^2 <= wz is written as below x^2 + y^2 + [ (w-z) / 2 ]^2 <= [ (w+z) / 2 ]^2 4x^2 + 4y^2 + (w-z)^2 <= (w+z)^2 norm( [2x, 2y, (w-z)] ) <= (w+z)
which is also representing the same rotated SOCP cone in R^4.
How RotatedSecondOrderCone() takes norm operation for x^2 + y^2 <= wz expression is still unclear to me.
The RSOC constraint (t, u, v) \in RSOC translates to
t, u \geq 0, 2 \times t \times u \geq x_{1}^{2} + ... + x_{n}^{2}
Thus, to have w \times z \geq x^{2} + y^{2}, you can write:
[w, z, x*sqrt(2), y*sqrt(2)] in RSOC()
[w/2, z, x, y] in RSOC()
[w, z/2, x, y] in RSOC()
[w/sqrt(2), z/sqrt(2), x, y] in RSOC()
All these formulations are equivalent, i.e., they represent the same set.
To answer the second part your last post: this relation comes from the fact that a Rotated Second-Order Cone can be obtained… by rotating a second-order cone (see the Mosek modeling cookbook).
Specifically, the rotation matrix is
When I apply the norm operator to representations given in bullet-(1,3), it yields 2 \times w z \geq x^2 + y^2 and bullet-(2,4) yield (1/2)*w z \geq x^2 + y^2.
Woops, the first one should have been [w, z, x*sqrt(2), y*sqrt(2)] in RSOC(). I just corrected that.
All (corrected) formulations are equivalent and express the constraint you initially stated, i.e., wz \geq x^{2} + y^{2}, w\geq 0, z \geq 0.
Recall the definition of rotated second-order cones as per my previous post and the MOI documentation. Don’t forget the 2 factor!