Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  conflicting result cplex MIP

    Posted 09/18/20 05:08 AM
    Solver: CPLEX studio 12.9 & 12.10, interactive optimizer and java interface

    I've generated a very simple MIP, a minimization problem with all objective coefficients non-negative. When solving this MIP (file kmd_a.lp), I get an objective value of 195.
    Next, I increase the lower bounds of the following variables:
    0 <= z_b(8,_6,_6)#76 <= 1 0 <= z_b(5,_5,_1)#80 <= 1 0 <= z_b(9,_3,_3)#81 <= 1 0 <= z_b(3,_2,_1)#82 <= 1​

    into:

    1 <= z_b(8,_6,_6)#76 <= 1 1 <= z_b(5,_5,_1)#80 <= 1 1 <= z_b(9,_3,_3)#81 <= 1 1 <= z_b(3,_2,_1)#82 <= 1

    In other words, I fix these variables to 1, thereby making the model more constrained. Next I resolve this new model (kmd_b.lp). This time I get an objective value of 165. So by reducing the variable domain, I got a better result. When I turn off the presolver (set preprocessing presolve n), both models return the expected solution 165. 

    Either I made some very silly mistake, or I hit a bug. Could someone run the 2 attached LP files and verify the above?



    ------------------------------
    Joris Kinable
    ------------------------------

    #DecisionOptimization


  • 2.  RE: conflicting result cplex MIP

    Posted 09/18/20 05:18 AM
    I confirm your findings.  And I can add the the development version of CPLEX doesn't exhibit this behavior.  I'll try to confirm whether this is really a bug, and whether it was fixed, rather than just hidden.

    ------------------------------
    Xavier
    ------------------------------



  • 3.  RE: conflicting result cplex MIP

    Posted 09/18/20 07:03 AM
    I confirm that this is a bug that will be fixed in the next version. `set pre _precedence -1` is a robust workaround that deactivates only the presolve reduction that had the issue, rather than all presolve. More details at https://www.ibm.com/support/pages/apar/RS03517.

    ------------------------------
    Xavier
    ------------------------------



  • 4.  RE: conflicting result cplex MIP

    Posted 09/18/20 12:01 PM
    Edited by System Admin 01/20/23 04:50 PM
    Thank you for your confirmation. The webpage you link to states:
    To change this parameter from the programming APIs, use
    parameter ID number 2201.
    I'm not quite sure how to do this in Java, e.g. something like this is not allowed:
    cplex.setParam(2201, -1);



    ------------------------------
    Joris Kinable
    ------------------------------



  • 5.  RE: conflicting result cplex MIP

    Posted 09/22/20 04:55 AM
    Edited by System Admin 01/20/23 04:25 PM
    Here's how to set an undocumented parameter in Java:
    private static class _Precedence extends IloCplex.IntParam {
    public _Precedence () {
    super(2201, "Undocumented _precedence parameter");
    }
    }
    public final static IloCplex.IntParam Precedence = new _Precedence();

    public static void main(String[] args) throws Exception {
    IloCplex cplex = new IloCplex();
    cplex.setParam(Precedence, -1);
    }​
    ------------------------------
    Xavier
    ------------------------------