Decision Optimization

Decision Optimization

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

 View Only
  • 1.  Different number of applied cuts using MIPCallbackI

    Posted Fri March 28, 2008 02:15 AM

    Originally posted by: SystemAdmin


    [marcello said:]

    I am testing different MIP formulations through some statistics on the applied cuts.
    I am working with CPLEX and Concert in a c++ environment.
    However, in some cases, the number of applied cuts reported by IloMIPCalbackI methods are different from those reported in the CPLEX log.

    As an example the number of cuts reported using Callbacks are:

    getNcliques() -> 172;
    getNimpliedBounds() -> 500;
    getNfractionalCuts() -> 98;

    while the log is saying:

    Clique cuts applied:  159
    Implied bound cuts applied:  38
    Gomory fractional cuts applied:  57

    The callback methods report the number of cuts added to the model at the time they are invoked while the final log is reporting only the applied ones.
    However, if the callback methods are invoked all the optimization long, the last time they are invoked they should report the number of  applied cuts.
    Am I wrong?

    Is it a way to know the number of different cuts applied in other way than looking for them in the log?

    Marcello

    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Different number of applied cuts using MIPCallbackI

    Posted Sun March 30, 2008 11:02 PM

    Originally posted by: SystemAdmin


    [MaryFenelon said:]

    The method IloCplex::getNcuts(IloCplex::CutType which) was added to CPLEX 11 and returns the same values that are printed in the log.  CPXgetnumcuts is the equivalent routine for the Callable Library.  We missed putting this in the CPLEX 11 release notes.
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Different number of applied cuts using MIPCallbackI

    Posted Fri April 04, 2008 02:59 PM

    Originally posted by: SystemAdmin


    [marcello said:]

    Dear Mary,
    thank you for your answer.
    Unfortunately we do not have CPLEX 11, our version is the 10.1.1 and therefore the method IloCplex::getNcuts is not available.

    Is there some other way to query the solver about the number of applied cuts?
    Is it also possible to have some clarification about the differences between the log and the MIPCallback?

    Thank you for your attention.

    Marcello
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Different number of applied cuts using MIPCallbackI

    Posted Mon April 07, 2008 09:10 AM

    Originally posted by: SystemAdmin


    [MaryFenelon said:]

    No, there isn't another way to query the number of applied cuts.  There are deprecated routines getNcliques and getNcovers for just those two types of cuts.

    The number of cuts you see in the callback is the number of cuts of that type which will be added to the node problem.  After each round of cuts at the root, we remove the inactive ones; some might come back in, some will not.  Some cuts will be dominated by other cuts. We add cuts during branching. The number of applied cuts is the number that is left at the very end.
    #CPLEXOptimizers
    #DecisionOptimization