[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