[Cbc] Global Gomory Cuts

Prakash Prabhu prakash.prabhu at gmail.com
Thu Sep 22 13:32:41 EDT 2011


Hi,

I have a question with regard to when it is legal to the make cuts globally
valid. From the Cgl sources, it seems like the only way that cuts discovered
at the interior nodes be made globally valid is to add 16 in the
CglTreeInfo.options, in the call to generateCuts():

void CglGomory::generateCuts(const OsiSolverInterface & si, OsiCuts & cs,
           const CglTreeInfo info)
{
....
if ((!info.inTree&&((info.options&4)==4||((info.options&8)&&!info.pass)))
      ||(info.options&16)!=0) {
    int numberRowCutsAfter = cs.sizeRowCuts();
    for (int i=numberRowCutsBefore;i<numberRowCutsAfter;i++) {
      int length = cs.rowCutPtr(i)->row().getNumElements();
      if (length<=limit_)
        cs.rowCutPtr(i)->setGloballyValid();
    }
  }
...
}

where CglTreeInfo.options has the following semantics:

int options
  ... 4 - set global cut flag if at root node 8 - set global cut flag if at
root node and first pass 16 - set global cut flag and make cuts globally
valid ...


My question is:   When is it valid to add in 16 to CglTreeInfo.options as
far as Cbc is concerned ?   From the source code, it seems like none of
calls to generateCuts() within Cbc set the options flag to 16 at all (and
consequently no cuts generated at the interior nodes are globally valid at
all)  After reading (parts) of the paper 'Gomory Cuts Revisited' (
http://page.math.tu-berlin.de/~luebbeck/teaching/computMIP0708/paper/balas-et-al_gomory-cuts-revisited.pdf),
it seems like for 0-1 programs, it is possible to "lift" cuts generated at
interior (non-root) nodes and make them globally valid. Is this currently
supported in the CglGomory::generateCuts() implementation ?  (if so, if I
just set CglTreeInfo.options |= 16; in calls to generateCuts, would that all
that would be necessary to generate global Gomory cuts for 0-1 programs? )

Thanks for your time.

regards,
Prakash
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cbc/attachments/20110922/c3dd10b4/attachment.html>


More information about the Cbc mailing list