Decision Optimization

Decision Optimization

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

 View Only
Expand all | Collapse all

Cplex MIP solver: Parameters for "pure branch and bound"

  • 1.  Cplex MIP solver: Parameters for "pure branch and bound"

    Posted Fri July 13, 2018 02:07 PM

    Originally posted by: x3t2h


    Hi,

    in order to compare the performance of my own Branch and Bound formulation with the built in MIP solver, I am searching for relevant paramters to make the MIP solver use a "pure" branch and bound algorithm, i.e no heuristics, cuts etc. I am using "depth first" node selection and "most infeasible" variable selection in my formulation. The settings I am using so far are:

    • Use dual simplex: setParam(IloCplex::RootAlg, 2)
    •  Deactivate presolver: setParam(IloCplex::PreInd, 0);
    • Deactive cuts: setParam(IloCplex::NumParam::CutsFactor, 1)
    • Branch on most infeasible variable: setParam(IloCplex::Param::MIP::Strategy::VariableSelect, 1)
    • Depth first node selection: setParam(IloCplex::Param::MIP::Strategy::NodeSelect, 0)
    • Disable dynamic search: setParam(IloCplex::Param::MIP::Strategy::Search, 1)
    • Limit threads to 1: setParam(IloCplex::Param::Threads, 1)
    • Reduce backtracking: setParam(IloCplex::Param::MIP::Strategy::Backtrack, 1) (It is not completely turned off, right?)
    • Turn off periodic heuritic: setParam(IloCplex::Param::MIP::Strategy::HeuristicFreq, -1)
    • Do not apply RINS heuristic: setParam(IloCplex::Param::MIP::Strategy::RINSHeur, -1)
    • Do not repeat presolve: setParam(IloCplex::Param::Preprocessing::RepeatPresolve, 0)

    Is there anything else I could use in order to turn off as many "advanced features" of Cplex as possible and make the MIP solver use the most basic branch and bound version?         

    Thanks a lot for your help!

              
               
             
               
          


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Cplex MIP solver: Parameters for "pure branch and bound"

    Posted Mon July 16, 2018 05:34 AM

    This seems a good start. For cuts it is however to use parameter CutPass ot make sure CPLEX does not perform any cutting plane passes.

    However, keep this in mind:

    • CPLEX is designed to be fast and smart. So there are things that you just cannot disable.
    • A good number of things that make CPLEX fast are trade secrets, hence there are no parameters anyway.

    Consequently, it is not possible to have CPLEX perform B&B in the "dumbest form possible". It will always do something more.

    Also, why limit threads to 1? That is not necessary to get as close as possible to "pure" B&B.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Cplex MIP solver: Parameters for "pure branch and bound"

    Posted Fri July 27, 2018 10:16 AM

    Originally posted by: x3t2h


    Thanks a lot. I limited the threads to 1 as my own branch and bound implementation is currently only capable of using one thread, but of course it is not necessary to do that just to obtain a "pure" branch and bound algorithm.


    #CPLEXOptimizers
    #DecisionOptimization