Originally posted by: MarkusS.
Hi,
in the manual, it is specified, that (at least) at the root node, the heuristic callback should be entered everytime before adding cuts. So when I also have a lazy and a usercut callback, I would expect that everytime after/before executing the cut-callbacks, CPLEX should go into the heuristic callback. However, it often happens that the cut-callbacks are called 10 times and more in a row, and then only we go into the heuristic callback. This is very bad in my case, since my separation routines are very time-consuming and I would be able to construct a really good heuristic solution based on the LP-values I can read in the cut-callbacks.
Right now, I am dealing with the situation by constructing the heuristic solution in the cut callbacks and store it in some pointer, which the heuristic callback can also access (something like this was suggested here somewhere). This is, however, not very satisfying, since it can take such a long time, until the heuristic callback is entered (and the thing with the pointer is maybe also not very thread-safe, when running CPLEX with more than one thread).
So is it normal, that the heuristic callback is entered only very randomly, or may I have set some bad parameter setting? If it is normal, is there a better way to deal with this situation? (I am using C++)
Thank you for your help!
Markus
#CPLEXOptimizers#DecisionOptimization