[Cbc] Cut Generator Question
Lou Hafer
lou at cs.sfu.ca
Fri Oct 22 13:13:59 EDT 2010
Kipp,
> When Cbc is implementing branch and cut, if it finds a node such that
> the continuous relaxation is integer will the node be automatically
> fathomed? Is it possible to tell Cbc to call a user cut generator even
> if it finds an integer node?
I was hoping somebody else with more knowledge would field this, but I
haven't seen any replies. The short answer is `yes, the node is fathomed
unless you do something.' But there are things you can do:
* CbcEventHandler offers two hooks, beforeSolution1 and beforeSolution2.
beforeSolution1 allows you to specify (by event handler return code)
that cut generators should be run and the node processed accordingly.
beforeSolution2 allows you to pretend (by event handler return code)
that the solution never happened. At a glance at the code,
beforeSolution1 is the hook you would want to use, returning addCuts
from your handler to prompt installed cut generators to run. The cut
generator must return true for the mustCallAgain method in order to be
run.
CbcEventHandler contains what documentation there is (doxygen). It's
not clear to me that all return codes (CbcAction enum) are applicable
at all event points (CbcEvent enum).
* Cbc has a bunch of hooks for use as a component in a non-linear
branch-and-cut framework. I know very little about them. The
OsiBabSolver class has what documentation there is (doxygen). My
(possibly incorrect) memory is that these were originally put in for
Bonmin. Your best bet is probably to contact the Bonmin or Couenne
developers and ask how the hooks are used.
Lou
More information about the Cbc
mailing list