<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hello,<br>
    <br>
    I've been struggling with Coin-BCP for several hours.<br>
    There is almost no informations on the topic of computing a lower
    bound<br>
    with Coin-BCP in a branch-and-price.<br>
    The given examples with Coin-BCP look weird, because,<br>
    the column generation processes seem to stop too early.<br>
    They occur in the function <i>compute_lower_bound</i>,<br>
    but, they do not add any column to the restricted master problem,<br>
    and they do not re-optimize the restricted master problem to get
    updated reduced cost.<br>
    There are comments like "TO DO" .... Ok ? So ?<br>
    <br>
    I've implemented the <i>generate_vars_in_lp</i> method.<br>
    Everything is working fine. Expected that the branch-and-price gives
    me false value.<br>
    I've checked the value given by the column generation at root nodes
    and it is correct.<br>
    Sometimes, the branch-and-price halts too early, indicating an
    optimal solution value,<br>
    which is not optimal.<br>
    <br>
    I thought it is because I have to implement the <i>compute_lower_bound</i>
    method,<br>
    as said in the documentation.<br>
    So, that's what I tryed to do.<br>
    But, how can I add the generated variables to the restricted master
    problem,<br>
    and reoptimize it, to get updated reduced costs, in a proper way ?<br>
    <br>
    I've tryed something like that (the column generation loop is
    missing, as I tryed<br>
    to add just one column first, and to reoptimize the restricted
    master problem) :<br>
    <br>
    <small><small><font face="Lucida Console">double
          LinearProgram::compute_lower_bound(const double oldLowerBound,<br>
          &nbsp;&nbsp;&nbsp; const BCP_lp_result&amp; LPResult, const
          BCP_vec&lt;BCP_var*&gt;&amp; variables,<br>
          &nbsp;&nbsp;&nbsp; const BCP_vec&lt;BCP_cut*&gt;&amp; cuts)<br>
          {<br>
          <br>
          &nbsp;&nbsp;&nbsp; BCP_vec&lt;BCP_var*&gt; generatedVariables ;<br>
          &nbsp;&nbsp;&nbsp; BCP_vec&lt;BCP_col*&gt; generatedColumns ;<br>
          &nbsp;&nbsp;&nbsp; BCP_vec&lt;BCP_col*&gt; columns ;<br>
          &nbsp;&nbsp;&nbsp; double lowerBound = oldLowerBound ;<br>
          &nbsp;&nbsp;&nbsp; generate_vars_in_lp(LPResult, variables, cuts, false,<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; generatedVariables, generatedColumns) ;<br>
          &nbsp;&nbsp;&nbsp; vars_to_cols(cuts, generatedVariables, columns,<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; LPResult, BCP_Object_FromGenerator,&nbsp;&nbsp;&nbsp; false) ;<br>
          &nbsp;&nbsp;&nbsp; this-&gt;getLpProblemPointer()</font></small></small>-&gt;<small>lp_solver</small><br>
    <br>
    Then, I tryed to add columns through the <i>OsiSolverInterface </i>methods,<br>
    but it looks messy, and it didn't work.<br>
    <br>
    Otherwise, the variables are correctly added to the the restricted
    master problem,<br>
    using the <i>generate_vars_in_lp</i> and <i>vars_to_cols</i>
    methods.<br>
    The pricing is going fine.<br>
    But it seems to fail for computing lower bounds,<br>
    and it looks like nodes are pruned too early.<br>
    <br>
    HELP please.<br>
    <br>
    Thanks in advance,<br>
    <br>
    Xavier Schepler<br>
    <br>
  </body>
</html>