What do the events that `SCIP_EVENTTYPE_NODESOLVED` comprises mean?

浪子不回头ぞ 提交于 2019-12-11 15:50:36

问题


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!


回答1:


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.



来源:https://stackoverflow.com/questions/56795112/what-do-the-events-that-scip-eventtype-nodesolved-comprises-mean

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!