Originally posted by: SystemAdmin
DanielJunglas wrote
-> CPLEX is expected to invoke the incumbent callback on the MIP start. And if you reject the MIP start there then CPLEX will of course not use it.
-> Actually, the cut callback should not be invoked for your MIP start.
I output the course of solution to the screen. Please see the attached files. I just used some information to show which callback the code was in.
You will see actually the cutcallback is first invoked in stance 1 when I provided a MIP start (of course it was not accepted, as I talked to you on previous threads, the MIP start is feasible).
But in instance 2, CPLEX first invoked the incumbent where I can accept the MIP start.
-> What is the value of the wherefrom parameter when the cut callback is invoked? In any case, if you dynamically generate constraints (cuts or lazy constraints) that are violated by the MIP start then CPLEX will not use the MIP start.
From the attached files, you will see the value of wherefrom varied over different instance, e.g., 106 and 115.
-> CPLEX will only use a MIP start if it is not rejected by the incumbent callback and not violated by any constraint (dynamically generated or part of the original model).
As we discussed before, my provided MIP start is feasible, but CPLEX did not accept it.
New questions:
From my attached files, you will see at each node, when no cut was found, CPLEX should then invoke branchcallback, but it invoked cutcallback again.
#CPLEXOptimizers#DecisionOptimization