Hello experts,

I am struggling to find the dual of a practical rotated conic programming problem. The problem is here:

min 2x1 + 2x2 + x3 − 3x4

s.t. x1 ≤ 7

2x1 + x3 − x2 + 0.5x4 = 4

x1 + x2 − 2x4 ≤ 15

2x1x2 ≥ (x3)^2 + (x4)^2

x1, x2 ≥ 0

To derive the dual, I first write the Lagrangian of this problem:

L = (2x1 + 2x2 + x3 − 3x4) − y1(7−x1) − y2(2x1 + x3 − x2 + 0.5x4 − 4) − y3(15 − x1 − x2 + 2x4) −(z1x1 + z2x2 + z3x3 + z4x4),

where y is the multiplier for affine constraints, and z is the multiplier for the rotated cone. By differentiating corresponding variables, the dual can be obtained as:

max −7y1 + 4y2 − 15y3

s.t. 2 + y1 − 2y2 + y3 − z1 = 0

1 + y2 + y3 − z2 = 0

1 − y2 − z3 = 0

−3 − 0.5y2 − 2y3 − z4 = 0

2z1z2 ≥ (z3)^2 + (z4)^2

z1, z2 ≥ 0

When I solved these two problems in MOSEK, the primal minimization problem yielded -16.168 and the dual maximization problem yielded 18.723, both optimal reportedly. Since primal and dual are feasible, they should satisfy weak duality, which means the primal solution should be greater or equal to the dual solution. But it is not here. I wonder if my dual is wrong but I checked multiple times and still have the same problem. Did I use the wrong way to derive the dual? Could anyone help me?