我正在尝试使用事件处理程序来捕获对偶边界的更改。 There is no event in type_event.h
for catching this,所以我想使用SCIP_EVENTTYPE_NODEFEASIBLE
事件。
我对SCIP_EVENTTYPE_NODESOLVED
由(SCIP_EVENTTYPE_NODEFEASIBLE
,SCIP_EVENTTYPE_NODEINFEASIBLE
和SCIP_EVENTTYPE_NODEBRANCHED
)组成的事件之间的关系感到困惑。这些事件是不相交的吗?它们具体是什么意思?恕我直言,文档对此不太清楚。
我的猜测如下(假设三个事件不相交):
SCIP_EVENTTYPE_NODEFEASIBLE
:此节点中的LP是不可或缺的。SCIP_EVENTTYPE_NODEINFEASIBLE
:该节点不可行或已被绑定修剪。SCIP_EVENTTYPE_NODEBRANCHED
:此节点上的LP解决方案是零碎的,已完成分支。谢谢!
答案 0 :(得分:3)
您的猜测几乎是正确的。如果通过传播或在求解节点LP之后检测到当前焦点节点不可行,则会引发SCIP_EVENTTYPE_NODEINFEASIBLE
。
但是,仅在找到新的现有解决方案后才通过修剪除去树中的开放节点。这是内部树动作,不会被任何事件捕获。
幸运的是,您不必为此担心,因为双重限制不受修剪的影响。只需在每个SCIP_EVENTTYPE_NODESOLVED
处查询对偶边界。