[Osi] Most efficient way to re-use a solved MIP problem with OSI

Steven Robinson srobinson3130 at gmail.com
Tue Aug 14 00:25:27 EDT 2012


Hello everyone,

I am writing a program, relying heavily on OSI (with CPLEX 12
implementation), that works in the following way:

1. I solve an initial MIP problem (problem 0) using the branchAndBound
method.
2. Depending on the solution found, I may either (based on a quantitative
criteria):
   - Stop the algorithm if the criteria is fulfilled.
   - Or, add some new constraints to problem 0, and resolve the problem
with the added constraints.

The algorithm goes on until it either stops because of
the quantitative criteria, or because the number of iteration reached a
maximum limit.


I have actually two questions:

1) With a OsiSolverInterface, should I prefer to use the addRows() method
or the applyRowCuts method? From the documentation, I can't really figure
out what would be the main difference.

2) Should I expect a typical MIP solver to efficiently perform a resolve
after adding a couple new constraints? what about adding new variables (is
it something I should avoid?)?

I know that for classic LP problems, adding a new (effective) constraint to
an already solve problem, would typically just require a marginal search
for the new optimum. Now, MIP sounds like a completely different kind of
animal. It feels like the MIP solver would typically have to restart from
zero instead of "reusing" all the work done while solving the initial
problem.


Thanks a lot for your help in advance!

SR
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/osi/attachments/20120813/2154e14d/attachment.html>


More information about the Osi mailing list