[Cbc] Global cuts

Francois Margot fmargot at andrew.cmu.edu
Mon Feb 28 11:11:19 EST 2011


John:

Thanks for the explanation. I implemented a "manual" global cut pool and
separate over it. It happens that some global cuts generated previously
are not activated by cbc. They are clearly violated (i,e. violation is
larger than 0.1, all coefficients in the cut are 1, so it is not a
numerical issue). It happens that a global cut generated at pass k is
violated at pass k+2.

I would also have one suggestion.

On Mon, 2011-02-28 at 11:44 +0000, John Forrest wrote:

> > 4) Finally, there seem to be a bug in the way active cuts are computed.
> > At the end of the run, cbc prints a message
> > 
> >    generator was tried 4837 times and created 697 cuts of which 0 were
> >    active after adding rounds of cuts
> > 
> > and no matter what cuts I generate (including cuts that force all nodes
> > to be immediately pruned), the number of active cuts is always 0. 
> 
> There is one pool for global cuts with no way of telling how it was
> generated.  So when added temporarily to local cuts, generator number is
> -1 and it will not be added to counts.  It would be simple to have them
> added to a "miscellaneous" cuts.
> 

When the cut is generated, the generator number g is included to the
description of the cut, isn'it?. Why replace g by -1 later? It is true
that the cut was not generated at that node by g, but it should be
recorded as a "good" cut for that generator. In some sense, if you
transform g into a local cut generator, g could generate that same cut
at different nodes and would be credited as generating "good" cuts
several times. Why should it be different for global cuts? The
statistics might look weird, as a cut generator could generate 100 cuts
and getting 500 active cuts over the tree, but this is more informative
and less misleading than saying that it had 0 active cuts.

Francois




More information about the Cbc mailing list