SCIP如何计算vanillafullstrongbranching-scores?

问题描述

我想对SCIP中的分支规则进行一些实验(使用python接口)。 为确保代码工作的一些基础知识,我尝试使用潜水功能来镜像SCIP的vanillafullstrongbranch。 这基本上可以按预期工作,但是对于至少有一个不可行子节点的节点,我得到了奇怪的结果。我通过PySCIPOpt和SCIP的C代码进行了挖掘,并期望有一个大数字,因为在至少一个孩子不可行的情况下sb得分,因为LP解算器返回了许多不可行的问题,而SCIP正在使用认情况下,产品得分。我得到的不是大数字,而是大到足以大于其他分数的数字。 我的问题是:代码中缺少什么? SCIP在何处以及如何对不可行儿童的分数进行不同的处理。

由于要重现此代码,我创建了一个gist,它利用了我也上传到github的set-cover实例。

解决方法

我很确定强分支分数永远不会超过lp的临界点,因此不可行的节点将获得lp的临界点。