Hello everyone,<div><br></div><div>I am writing a program, relying heavily on OSI (with CPLEX 12 implementation), that works in the following way:</div><div><br></div><div>1. I solve an initial MIP problem (problem 0) using the branchAndBound method.</div>
<div>2. Depending on the solution found, I may either (based on a quantitative criteria):</div><div>   - Stop the algorithm if the criteria is fulfilled.</div><div>   - Or, add some new constraints to problem 0, and resolve the problem with the added constraints.</div>
<div><br></div><div>The algorithm goes on until it either stops because of the quantitative criteria, or because the number of iteration reached a maximum limit.</div><div><br></div><div><br></div><div>I have actually two questions:</div>
<div><br></div><div>1) With a OsiSolverInterface, should I prefer to use the addRows() method or the applyRowCuts method? From the documentation, I can&#39;t really figure out what would be the main difference.</div><div>
<br></div><div>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?)?</div><div><br></div><div>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 &quot;reusing&quot; all the work done while solving the initial problem.</div>
<div><br></div><div><br></div><div>Thanks a lot for your help in advance!</div><div><br></div><div>SR</div>