Decision Optimization

Decision Optimization

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

 View Only
  • 1.  How to disable all branch & bound improvements in IloCplex

    Posted Wed July 14, 2021 08:41 AM

    Hi,
    I want to solve a MIP in Cplex (with IloCplex for C++) using only the branch & bound feature (i.e. without all the enhancements that speed up the solving like probing, running heuristics at each node, adding cuts etc.). The idea is to be able to test the impact of my own cuts without the results being blurred by the cuts and the various improvements of Cplex on the branch & bound.

    I have already disabled many methods but the root relaxation is still better than the objective value I get when I run my MIP with all integrity constraints relaxed meaning that Cplex is still improving the branch & bound by any means.

    I set the following parameters:

        cplex.setParam(IloCplex::Param::Preprocessing::Presolve, IloFalse);
        cplex.setParam(IloCplex::Param::MIP::Strategy::Search, IloCplex::Traditional);
        cplex.setParam(IloCplex::Param::MIP::Strategy::Probe, -1);
        cplex.setParam(IloCplex::Param::MIP::Strategy::HeuristicFreq, -1);
        cplex.setParam(IloCplex::Param::Preprocessing::BoundStrength, 0);
        cplex.setParam(IloCplex::Param::Preprocessing::CoeffReduce, 0);
        cplex.setParam(IloCplex::Param::MIP::Limits::CutPasses, -1);
        cplex.setParam(IloCplex::Param::MIP::Strategy::FPHeur, -1);


    and I deactivated all cuts by:

        cplex.setParam(IloCplex::Param::MIP::Cuts::BQP, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::Cliques, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::Covers, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::Disjunctive, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::FlowCovers, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::Gomory, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::GUBCovers, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::Implied, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::LiftProj, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::LocalImplied, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::MCFCut, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::MIRCut, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::PathCut, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::RLT, -1);
        cplex.setParam(IloCplex::Param::MIP::Cuts::ZeroHalfCut, -1);


    What am I missing?

    Thanks in advance for any help.

    Helene



    ------------------------------
    Hélène Toussaint
    ------------------------------

    #DecisionOptimization


  • 2.  RE: How to disable all branch & bound improvements in IloCplex

    Posted Wed July 14, 2021 10:22 AM
    Refer to this thread.

    If that does not work, search for "MIP settings to completely disable cplex preprocessing and cplex cuts" in the "search for your favorite topic" box above to get to the same thread. Essentially, according to the answer there, it is impossible to make CPLEX completely naive.

    ------------------------------
    CPLEX User
    ------------------------------



  • 3.  RE: How to disable all branch & bound improvements in IloCplex

    Posted Thu July 15, 2021 03:36 AM
    Thanks a lot for your prompt answer.

    Best regards,

    ------------------------------
    Hélène
    ------------------------------