Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  CPLEX Presolve takes forever

    Posted 04/03/20 07:25 AM

    Originally posted by: LaylaM


    Hi!

    I have the following problem: My CPLEX model (called through Java) is a rather complex VRP. I use a heuristic to generate new integer solutions, and pass them to CPLEX using a callback. However, this callback should not do anything until CPLEX has found an integer solution (which i pass using addMIPStart)

    There is a time limit of 1hr, and the output looks like the following: 

    CPXPARAM_Preprocessing_Presolve                  0
    CPXPARAM_TimeLimit                               7200
    CPXPARAM_Preprocessing_Linear                    0
    CPXPARAM_MIP_Strategy_HeuristicFreq              -1
    CPXPARAM_Emphasis_MIP                            3
    CPXPARAM_Preprocessing_RepeatPresolve            0
    CPXPARAM_MIP_Limits_RepairTries                  -1
    Warning: Control callbacks may disable some MIP features.
    1 of 2 MIP starts provided solutions.
    MIP start 'bike' defined initial solution with objective 12.1661.

    Root node processing (before b&c):
      Real time             = 356832.94 sec. (1765.54 ticks)
    Sequential b&c:
      Real time             =    0.00 sec. (0.00 ticks)
                              ------------
    Total (root+branch&cut) = 356832.94 sec. (1765.54 ticks)

     

    It takes roughly 4 days to finish presolve, which leaves no time for the computation itself. 

    Is there anything I can do to make sure that hardly any time is spent on presolve (not more than a few seconds)? 

    Is there a reason why it takes 4 days, but only 1765 ticks? (I use dedicated memory and CPU, so it should not be a consequence of the computation itself). 


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: CPLEX Presolve takes forever

    Posted 04/03/20 10:35 AM

    According to your parameter settings, you have disabled presolve. So the time is probably spent in some other place.

    There is definitely something odd going on because you also have a time limit of 7200 seconds and that is violated big time.

    Did you check whether your callback is invoked and whether maybe you burn a lot of time in that callback? That would explain why the time limit is not obeyed and why there is such a big mismatch between ticks and elapsed real time: CPLEX does not account for time spent in a callback and has no way to interrupt a callback. What sort of callback is that? Could it be a lazy constraint callback that is invoked for the MIP start?

    Another thing that could be time consuming is processing of the MIP starts. How do they look like? Do you have values for all variables in the start? What is the effort level with which you submit the start?


    #CPLEXOptimizers
    #DecisionOptimization