Hi

I am implementing a branch and cut algorithm for an inventory routing problem where violated sub tour elimination constraints are added dynamically in each node.

However, the troubling part is that the algorithm makes the solution process extremely slow and the problem seems to be with setCutMode. If I set this to 1 the solver becomes extremely slow even if I don't add any cuts. A quick fix is to not activate setCutMode. The solver will still be fast then, but it can sometimes cut off the optimal solution. And this can vary from time to time even on the same instance.

I haven't found any information online on what this setCutMode actually does, and what are the consequences of not turning it on? And are there any settings you can change after you have turned it on in order to prevent it from making the solver extremely slow?

Any help would be highly appreciated!

I am using BCL and C++

Hi, BCL has limited cut manager support. Calling setCutMode(1) disables the presolver, which explains the slower performance but is required because BCL's addcuts function loads the cuts, as defined in the original space, directly into the Optimizer.

Alternatively you could use the Optimizer APIs (even together with BCL) or the Mosel modelling language, which support adding rows to a presolved matrix and therefore don't require to completely disable the presolver.