# Duals from second-order cone or quadratic model

When it comes to extracting duals for second-order cone programs or quadratically constrained programs, it depends on both solver and the way you modelled the constraint.

## CPLEX

The interface YALMIP uses to communicate with CPLEX (*cplexqcp.m*) does not support extraction of SOCP duals.

## Gurobi

To extract duals from second-order cone constraints using GUROBI, the functionality must be activated in the solver first. The solver supports both extraction of the conic vector dual on CONE constraints, and extraction of a dual to a scalarized quadratic constraint.

```
x = sdpvar(2,1);
Model = [x'*x <= 1];
options = sdpsettings('solver','gurobi','gurobi.qcpdual',1);
optimize(Model,sum(x),options);
dual(Model(1))
ans =
0.7071
Model = [cone([1;x])];
options = sdpsettings('solver','gurobi','gurobi.qcpdual',1);
optimize(Model,sum(x),options);
dual(Model(1))
ans =
1.4142
1.0000
1.0000
```

## Mosek

With MOSEK, only socp duals on CONE constraints are possible.

```
x = sdpvar(2,1);
Model = [cone([1;x])];
options = sdpsettings('solver','mosek');
optimize(Model,sum(x),options);
dual(Model(1))
ans =
1.4142
1.0000
1.0000
```

## Leave a Comment