how to formulate a KKT complementarity condition for second order cone constraint?
AnsweredI have a second order cone constrint, i.e. P^2 + Q^2 <= vl.
Then I am trying to write a KKT complementarity condition, i.e. \lambda * (P^2 + Q^2  vl) == 0. However, gurobi seems like not supporting this kind of formulation, as it not supports multiplying three variables.
How can I solve this issue? Should I introduce other variables and constraints? Such as tmp1 = P^2, tmp2 = Q^2, tmp3 = vl, then \lambda * (tmp1 + tmp2  tmp3) = 0?
Or I use another formulation for complementarity condition, i.e. let y = [2P 2Q vl v+l]^T, and \lambda^T \cdot y = 0, and \lambda belongs to dual cone. But in this case, the number of dual variables is different from the number of primal constraints.

Another question is that, is it possible to get the dual variable value with respect to the second order cone constraint?
0 
Hi John,
How can I solve this issue? Should I introduce other variables and constraints? Such as tmp1 = P^2, tmp2 = Q^2, tmp3 = vl, then \lambda * (tmp1 + tmp2  tmp3) = 0?
You are correct. You have to introduce auxiliary variables. This is also described in the Knowledge Base article How do I model multilinear terms in Gurobi?
Another question is that, is it possible to get the dual variable value with respect to the second order cone constraint?
You can get dual variable values from Gurobi as long as your model is convex. You have to set the QCPDual parameter for this. If your model is nonconvex, then you cannot get any dual values from Gurobi. Your complementarity conditions are nonconvex, thus you cannot retrieve any dual information from Gurobi after a successful solve. We describe a way for how to obtain dual values for MIPs in the Knowledge Base article How do I retrieve the (dual) Pi values for a MIP problem? The same idea applies to nonconvex continuous models.
Best regards,
Jaromił0
Please sign in to leave a comment.
Comments
2 comments