了解 pyscipopt 中的 getOpenNodes 函数

Understanding the getOpenNodes function in pyscipopt

我正在尝试实现节点选择,为此我需要了解 pyscipopt 中的 getOpenNodes 函数。它应该给出焦点节点的叶子、兄弟和children。

  1. 这些是不相交的子集,它们的并集是否给出了树中的所有开放节点?
  2. 焦点节点是如何决定的?是刚刚进行过分支的节点吗(树的深度大于1的情况下)?
  3. 如果是这样,那我就明白了children和兄弟姐妹wrt焦点节点的意思了。叶子集是否包括树中所有其他开放节点?

谢谢!如果需要任何说明,请告诉我。

开放节点的总数计算为子节点 + 兄弟节点 + 叶节点(参见 SCIPtreeGetNNodes)。所以,是的,这些集合是不相交的。

焦点节点是当前正在处理的节点,即SCIP解决对应的LP松弛,然后根据节点选择策略决定下一步去哪里。

是的,除了焦点节点的兄弟节点和子节点之外,叶子都是当前打开的叶子。

一般来说,检查 PySCIPOpt 调用的各个函数的 SCIP 文档通常很有帮助。