Decision Optimization

Decision Optimization

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

 View Only
Expand all | Collapse all

Wrong optimal solution: MIQP

  • 1.  Wrong optimal solution: MIQP

    Posted Wed December 17, 2014 10:36 AM

    Originally posted by: m_carv


    Hi everyone

    I am solving the following mixed integer quadratic problem

    Maximize
     obj: - 16 y1 + 13 q1 + [ - 2 q1 ^2 ] / 2
    Subject To
     bigM: - 50 y1 + q1 <= 0
    Bounds
     0 <= y1 <= 1
    Binaries
     y1
    End
     

    for which the optimal solution is y1=1, q1 = 6.5 with objective value equal to 26.25.

    However, when the optimization executed by CPLEX 12.6.0.0 is y1=0 and q1=0.

    Attached it is the python file to create and solve the above optimization problem.

    Am I doing something wrong? Is this a bug?

    I changed the quadratic coefficient to be 0.5 and, in this case, the correct optimal solution is returned by CPLEX....

    Thanks in advance.

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Wrong optimal solution: MIQP

    Posted Wed December 17, 2014 10:53 AM

    Hi

    this looks like a presolve issue.

    Can you try with

    parameters.preprocessing.presolve

    set to 0 ?

    regards


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Wrong optimal solution: MIQP

    Posted Wed December 17, 2014 11:04 AM

    Originally posted by: m_carv


    Adding

    cpx.parameters.preprocessing.presolve.set(0)

    to the python file in fact solves the issue. Cplex is able to return the optimal solution.

    Thank you very much for the suggestion.

    best


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Wrong optimal solution: MIQP

    Posted Mon December 22, 2014 02:40 PM

    Originally posted by: EdKlotz


    Yes, something looks wrong with presolve here, and we will investigate.   Meanwhile, you can work around the problem without giving up all of presolve by setting the presolve reduce parameter to only do primal reductions.    From Python I think this would be cpx.parameters.preprocessing.reduce.set(1).


    #CPLEXOptimizers
    #DecisionOptimization