Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.

 View Only
Expand all | Collapse all

Suspected bug about duals for rotated second-order cone constraints

  • 1.  Suspected bug about duals for rotated second-order cone constraints

    Posted Wed February 26, 2020 03:44 PM

    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


  • 2.  Re: Suspected bug about duals for rotated second-order cone constraints

    Posted Fri February 28, 2020 11:15 AM

    This indeed looks like a bug in CPLEX. I reproduced the problem here and will investigate. At the moment, I suspect that the issue is the same as the one reported here: https://github.com/cvxgrp/cvxpy/issues/920

    The bug is probably related to transforming the duals from the presolved to the original model after the model was solved. If you set CPX_PARAM_PREIND=0 and CPX_PARAM_REDUCE=0 then you get the correct results.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Suspected bug about duals for rotated second-order cone constraints

    Posted Wed March 04, 2020 08:51 AM

    The bug is indeed the same as the one I quoted in my previous answer. Please see the link there for further details.


    #CPLEXOptimizers
    #DecisionOptimization