Decision Optimization

 View Only

How does CPLEX handle objective estimates passed to the makeBranch method?

  • 1.  How does CPLEX handle objective estimates passed to the makeBranch method?

    Posted Mon March 22, 2021 06:52 AM
    Hi everyone,

    I want to implement a (simple) branching heuristic through a CPLEX generic callback. There are multiple overloads of the makeBranch method in CPLEX's C++ API, see here:
    CPXLONG makeBranch(IloNumVar const & branchVar, IloNum bound, IloCplex::BranchDirection dir, IloNum estimate) const

    The function argument of interest is estimate, which is an estimate for the objective value of the new child's relaxation. According to the docs, it is often a reasonable choice to use the objective value of the current node's relaxation. Unfortunately, I could not find any information on how CPLEX handles this estimate.

    Assuming I can cheaply calculate an accurate objective estimate for the newly created node's relaxation. Is it guaranteed that CPLEX processes the node with the best estimate first? In other words, is it possible to control the B&B search strategy via estimate?

    Thanks in advance!


    PS: This is a cross-post. I asked the same questions on OR.

    Best regards,
    Jonathan

    ------------------------------
    Jonathan Helgert
    ------------------------------