Decision Optimization

Decision Optimization

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

 View Only
  • 1.  Possible bug in CPLEX MIP presolver

    Posted Fri April 29, 2016 04:52 AM

    Originally posted by: AlexeySeleznev


    I have a linear mixed integer problem that produces wrong output with CPLEX (tried both 12.4 an 12.6.1). In original problem some variables bounded in [0,1], howewer CPLEX decides to make them outside these bounds.

    After some research, I made the model example with all integer variables fixed at some values. With default settings (and presolver turned on) CPLEX solved this problem with:

    CPLEX> read cplex-preprocessor-bug.mps 

    CPLEX> mipopt

    CPLEX> dis prob bounds x989 

    -0.001 <= x989 <= 1         

    CPLEX> dis sol var x989                
    Incumbent solution                     
    Variable Name           Solution Value 
    x989                  -61403114.785576 

    CPLEX> dis sol obj                                             

    MIP - Integer optimal solution:  Objective = -2.4401847565e+015

     

    If I'm turning presolver off, then on the same problem:

    CPLEX> set prep pres n               
    New value for presolve indicator: no 

    CPLEX> read cplex-preprocessor-bug.mps 

    CPLEX> mipopt

    CPLEX> dis sol var x989  

    Incumbent solution       
    The variable 'x989' is 0.

    CPLEX> dis sol obj                                             
    MIP - Integer optimal solution:  Objective = 3.4235555000e+003

     

    The second solution (with presolver turned off) is correct. Is seems that presolver incorrectly eliminates an essential variable bound, producing incorrect optimisation result.

    Can anyone try the example (attached as cplex-preprocessor-bug.mps) on the newest CPLEX version (as I know, 12.6.3)?


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Possible bug in CPLEX MIP presolver

    Posted Mon May 02, 2016 12:37 AM

    Thanks a lot for reporting this.

    Unfortunately, the latest CPLEX version (12.6.3) shows the exact same behavior. I am looking into that and will keep you posted.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Possible bug in CPLEX MIP presolver

    Posted Wed May 04, 2016 03:49 AM

    Originally posted by: AlexeySeleznev


    Thank you, Daniel.

    I attached the reduced problem that shows the same bug. Some constraints in the model are redundant (x <= 60, y <= 60, x+y<=9999999), but when they removed, behavior is disappeared.


    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Possible bug in CPLEX MIP presolver

    Posted Fri May 06, 2016 01:40 AM

    Thanks a lot. I think I have found the problem. Can you please try to disable the aggregator (CPX_PARAM_AGGIND) instead of all of presolve? That is less intrusive but should still work around the problem.


    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: Possible bug in CPLEX MIP presolver

    Posted Wed March 01, 2017 07:40 AM

    Originally posted by: Nils-HassanQuttineh


    Hello!

    I have encountered a similar problem, the presolver seems to do more than it should. I have a MIP-problem with only binary variables, they are part of the objective function with (finite) integer coefficients, and still cplex returns a "320: integer unbounded ray", which is impossible considering that all variables are binary (hence limited).

    The problem seems to occur as cplex does a second round of presolving:

     

    CPLEX 12.5.0.0: timing 1
    mipdisplay 2
    time 3600
    MIP Presolve eliminated 277 rows and 68 columns.
    MIP Presolve modified 964 coefficients.
    Reduced MIP has 7510 rows, 2099 columns, and 23526 nonzeros.
    Reduced MIP has 2099 binaries, 0 generals, 0 SOSs, and 0 indicators.
    Found incumbent of value 39963.000000 after 0.05 sec. (28.90 ticks)
    Probing fixed 50 vars, tightened 0 bounds.
    Probing time = 0.06 sec. (36.73 ticks)
    MIP Presolve eliminated 2992 rows and 412 columns.
    MIP Presolve modified 93 coefficients.
    Reduced MIP has 4515 rows, 1684 columns, and 14147 nonzeros.
    Reduced MIP has 1684 binaries, 0 generals, 0 SOSs, and 0 indicators.
    Probing time = 0.02 sec. (3.89 ticks)
    Clique table members: 211.
    MIP emphasis: balance optimality and feasibility.
    MIP search method: dynamic search.
    Parallel mode: deterministic, using up to 24 threads.
    Root relaxation solution time = 0.01 sec. (7.39 ticks)

            Nodes                                         Cuts/
       Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap

    *     0+    0                        31682.0000  -124083.5000       44  491.65%
    *     0+    0                        -1000.0000  -124083.5000       44     ---
          0     0    -2410.1124     9    -1000.0000    -2410.1124       44  141.01%
    *     0+    0                        -1971.0000    -2410.1124       44   22.28%
    *     0+    0                        -1981.0000    -2410.1124      130   21.66%
          0     0    -2000.0000     6    -1981.0000      Cuts: 10      130    0.96%
    *     0+    0                        -1982.0000    -2000.0000      130    0.91%

    Repeating presolve.
    MIP Presolve eliminated 4457 rows and 1612 columns.
    MIP Presolve modified 53 coefficients.
    Reduced MIP has 58 rows, 72 columns, and 284 nonzeros.
    Reduced MIP has 72 binaries, 0 generals, 0 SOSs, and 0 indicators.
    Represolve time = 0.00 sec. (3.61 ticks)

    Root node processing (before b&c):
      Real time             =    0.12 sec. (68.09 ticks)
    Parallel b&c, 24 threads:
      Real time             =    0.00 sec. (0.00 ticks)
      Sync time (average)   =    0.00 sec.
      Wait time (average)   =    0.00 sec.
                              ------------
    Total (root+branch&cut) =    0.12 sec. (68.09 ticks)

    Times (seconds):
    Input =  0.010997
    Solve =  0.450932
    Output = 0.001999
    CPLEX 12.5.0.0: integer unbounded ray.
    0 MIP simplex iterations
    0 branch-and-bound nodes
    No basis.

     

    If I turn off cplex presolve, the optimal solution is found (with obj.value -1982).

     

    Any ideas? How to proceed?

    /Nils

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: Possible bug in CPLEX MIP presolver

    Posted Wed March 01, 2017 12:10 PM

    Hi,

    have you tried with CPLEX 12.7 ?

    regards


    #CPLEXOptimizers
    #DecisionOptimization


  • 7.  Re: Possible bug in CPLEX MIP presolver

    Posted Thu March 02, 2017 01:24 PM

    Originally posted by: Nils-HassanQuttineh


    Hello Alex!

    Thank you for a quick reply. No, I have not tried with CPLEX 12.7, we have not updated to latest version yet. I'll let you know when I've tried that.

    /Nils


    #CPLEXOptimizers
    #DecisionOptimization


  • 8.  Re: Possible bug in CPLEX MIP presolver

    Posted Thu March 02, 2017 01:48 PM

    Originally posted by: Nils-HassanQuttineh


    Ok, with CPLEX 12.7 this is not happening. The presolve routine does a second round again, but with another outcome, excellent!

    /Nils


    #CPLEXOptimizers
    #DecisionOptimization