0

I'm trying to catch a change in the dual bound using an event handler. There is no event in type_event.h for catching this, so I want to use the SCIP_EVENTTYPE_NODEFEASIBLE event.

I'm a bit confused by the relationship between the events that SCIP_EVENTTYPE_NODESOLVED is comprised of (SCIP_EVENTTYPE_NODEFEASIBLE, SCIP_EVENTTYPE_NODEINFEASIBLE, and SCIP_EVENTTYPE_NODEBRANCHED). Are these events disjoint? What do they mean specifically? IMHO, the documentation is not very clear about this.

My guess is the following (assuming that the three events are disjoint):

  • SCIP_EVENTTYPE_NODEFEASIBLE: the LP in this node is integral.
  • SCIP_EVENTTYPE_NODEINFEASIBLE: the node is infeasible or it was pruned by bound.
  • SCIP_EVENTTYPE_NODEBRANCHED: the LP solution at this node is fractional and branching was done.

Thanks in advance!

rocarvaj
  • 546
  • 4
  • 19

1 Answers1

3

Your guess is almost right. A SCIP_EVENTTYPE_NODEINFEASIBLE is thrown if the current focus node is detected to be infeasible, either by propagation or after solving the node LP.

However, the removal of open nodes in the tree by pruning only occurs after a new incumbent solution has been found. This is an internal tree action that is not captured by any event.

Luckily, you do not have to worry about that, because the dual bound is unaffected by pruning. Just query the dual bound at every SCIP_EVENTTYPE_NODESOLVED.

Gregor
  • 1,333
  • 9
  • 16
  • Thanks a lot, Gregor! As you say, I actually don't need to know the details of the node event to check for updates in the bound. But it was good to learn this. How can a simple mortal like me make suggest improvements to the SCIP documentation? – rocarvaj Jun 27 '19 at 17:02
  • 1
    We are always trying to improve the documentation. You can always contact me personally since I am in charge of the documentation. I will update my responsibilities on the web page to make this clearer. An alternative is to use the [submission form for bugs](https://scip.zib.de/bugs.php), which will create a SCIP ticket in our gitlab. Looking forward to your suggestions. – Gregor Jun 28 '19 at 07:44