Decision Optimization

Decision Optimization

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

 View Only
Expand all | Collapse all

Strange behaviour with Heuristic Callback

  • 1.  Strange behaviour with Heuristic Callback

    Posted Thu August 20, 2009 01:40 AM

    Originally posted by: SystemAdmin


    [chicoscience said:]

    Hi everybody,

    I am having a strange behaviour when using a Heuristic Callback. I have an empty heuristic callback (that does nothing) in my Branch and Cut. If the line:

    [i]cplex.use(HeurCallback(env, etc...));[/i]

    is uncommented, i solve a test instance by exploring 25 nodes.

    However, if it is commented:

    //[i]cplex.use(HeurCallback(env, etc...));[/i]

    The same instance is solved by exploring 75 nodes. The other parameters are all equal. The only difference is that in one case I am using an empty heuristic callback. Anyone knows why this happens? Shouldn't be the same for both?

    The behavior is always the same when using the empty heuristic callback and always the same when not using the empty heuristic calback.

    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Strange behaviour with Heuristic Callback

    Posted Mon October 05, 2009 11:32 PM

    Originally posted by: SystemAdmin


    [achterberg said:]

    There can be basically two reasons:

    1. With CPLEX 11 we introduced dynamic search. This is incompatible with control callbacks, which means that adding a control callback like the heuristic callback (even if it is empty) you implicitly deactivate dynamic search and fall back to traditional branch-and-cut.

    2. Even in traditional B&C the addition of an empty callback can lead to subtle changes. In order to prepare to go into a user callback, we need to do some minor clean-up to our internal data structures. Hence there is a very small difference which can lead to tiny changes in floating point arithmetics. But since MIP solvers use floating point results to perform decision (like on which variable to branch), such tiny differences can have a huge impact on the overall search tree.

    #CPLEXOptimizers
    #DecisionOptimization