[Cbc] reusing root node LP basis

Miles Lubin miles.lubin at gmail.com
Fri Jun 1 15:54:31 EDT 2012


I have an application where I need to solve a sequence of MILPs with
varying coefficients in the objective; all other problem data remain
fixed. I'm not aware of any practical parametric approaches, so my
idea is to simply warm-start cbc to the extent possible from a
previous solution, by 1) providing a good feasible solution, and 2)
providing a good starting basis for the root node. It seems like 1) is
straightforward by using setHotstartSolution, so my question is
regarding 2). The LP relaxations are particularly expensive to solve
from scratch, so providing a starting basis for the root node is a
practical necessity and not a minor optimization in my case.

I've been successfully able to set a starting basis for the root node
by using CbcModel::solver()->setWarmStart() and then solving the model
by calling branchAndBound. If I solve using CbcMain1, however, the
starting basis is ignored. I am guessing that the starting basis is
lost because a different preprocessed model is the one actually
solved. Is there a way to work around this?

Thanks in advance,
Miles


More information about the Cbc mailing list