[BCP] Branch-and-price, computing lower bound, ...
Xavier Schepler
xavier.schepler at gmail.com
Sun Feb 10 05:20:53 EST 2013
Hello,
I've been struggling with Coin-BCP for several hours.
There is almost no informations on the topic of computing a lower bound
with Coin-BCP in a branch-and-price.
The given examples with Coin-BCP look weird, because,
the column generation processes seem to stop too early.
They occur in the function /compute_lower_bound/,
but, they do not add any column to the restricted master problem,
and they do not re-optimize the restricted master problem to get updated
reduced cost.
There are comments like "TO DO" .... Ok ? So ?
I've implemented the /generate_vars_in_lp/ method.
Everything is working fine. Expected that the branch-and-price gives me
false value.
I've checked the value given by the column generation at root nodes and
it is correct.
Sometimes, the branch-and-price halts too early, indicating an optimal
solution value,
which is not optimal.
I thought it is because I have to implement the /compute_lower_bound/
method,
as said in the documentation.
So, that's what I tryed to do.
But, how can I add the generated variables to the restricted master problem,
and reoptimize it, to get updated reduced costs, in a proper way ?
I've tryed something like that (the column generation loop is missing,
as I tryed
to add just one column first, and to reoptimize the restricted master
problem) :
double LinearProgram::compute_lower_bound(const double oldLowerBound,
const BCP_lp_result& LPResult, const BCP_vec<BCP_var*>& variables,
const BCP_vec<BCP_cut*>& cuts)
{
BCP_vec<BCP_var*> generatedVariables ;
BCP_vec<BCP_col*> generatedColumns ;
BCP_vec<BCP_col*> columns ;
double lowerBound = oldLowerBound ;
generate_vars_in_lp(LPResult, variables, cuts, false,
generatedVariables, generatedColumns) ;
vars_to_cols(cuts, generatedVariables, columns,
LPResult, BCP_Object_FromGenerator, false) ;
this->getLpProblemPointer()->lp_solver
Then, I tryed to add columns through the /OsiSolverInterface /methods,
but it looks messy, and it didn't work.
Otherwise, the variables are correctly added to the the restricted
master problem,
using the /generate_vars_in_lp/ and /vars_to_cols/ methods.
The pricing is going fine.
But it seems to fail for computing lower bounds,
and it looks like nodes are pruned too early.
HELP please.
Thanks in advance,
Xavier Schepler
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/bcp/attachments/20130210/ac8bdfef/attachment.html>
More information about the BCP
mailing list