We are currently solving a hard MILP problem on optimality. Once it has been solved, several times (from 5 to 10 times), we change one coefficient of the objective function and reoptimize. Thus the feasible solutions are the same, the optimal solutions change.

During each solve we generate subtour elimination constraints as lazy constraints by callbacks as a part of the MILP problem consists of a ring. We decided to store these constraints and reuse them between each reoptimization, with the idea that it would speed up the whole process.

However, the performances are totally worse when reusing the lazy constraints (generated as callbacks) as lazy constraints, not generated by callbacks but put at the very beginning of each reoptimization model.

What could cause such performance degradation? The total CPU times shift from approximately 3500 seconds to 4500 seconds when storing the lazy constraints.

  • 2
    $\begingroup$ This is speculation, but perhaps the solver encounters different subtours with each new objective function (perhaps with some overlap, but with many/most subtours new). That would result in each successive solve spending about as much time in the callback(s) plus dragging along the baggage of the lazy constraints. $\endgroup$
    – prubin
    Commented Feb 18 at 4:17
  • $\begingroup$ It might be easier to see what happens with the logs of both solves $\endgroup$
    – fontanf
    Commented Feb 18 at 16:54


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.