Originally posted by: gsagnol
Hi,
I am a developer of PICOS, a user friendly python-interface to different solvers, including CPLEX.
While preparing a release, we found a problem in which CPLEX seems to return dual variables equal to 0 for a linear constraint, although the optimal dual should be>0. This problem involves "rotated second order cone constraints", and only when we add a slack variable in the problem. I attach a script with my python code (using the CPLEX API), for a minimal example that fails.
The original problem is:
maximize -y -u
s.t. y free
u,v,z >=0
z <= 1
y^2 <= 4*z*v
v^2 <= 4*u
The optimal dual variable for the constraint z<=1 is 2^(1./3), which is approximately 1.2599.
When I enter the problem in the above form, CPLEX returns the correct dual variable. So far so good. However, for our PICOS interface we often need to create slack variables manually for the (rotated) second order cones. A minimal example is obtained when we add a slack variable z2=z to be used in the conic constraint:
maximize -y -u
s.t. y free
u,v,z,z2 >=0
z <= 1
z = z2
y^2 <= 4*z2*v
v^2 <= 4*u
This time, CPLEX tells me that the optimal dual variable for "z <= 1" is 0, but this is wrong. Is it a bug of CPLEX ? I am using CPLEX 12.10.0.0
#CPLEXOptimizers#DecisionOptimization