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