我想在SCIP中做一些分支规则的实验(使用python接口)。为了确保我的代码的一些基础工作,我尝试使用dive功能来镜像SCIP的vanillafullstrongbranching分支。这在很大程度上符合预期,但对于至少有一个不可行子节点的节点,我得到了奇怪的结果。我深入研究了PySCIPOpt和SCIP的C代码,并期望一个很大的数字作为sb分数,以防(至少)一个孩子是不可行的,因为LP-solver为不可行的问题返回一个很大的数字,而SCIP默认使用乘积分数。我得到的不是大数字,而是大到足以比其他分数大的数字。我的问题是:我在代码中遗漏了什么?SCIP如何以不同的方式对待不可行的孩子的分数。
因为需要相当多的代码来重现这一点,所以我创建了一个gist,它利用了我也上传到github上的set-cover实例。
发布于 2020-09-11 23:01:43
我非常确定强分支得分永远不会超过lp的截止界,因此不可行的节点将获得截止界的得分。
https://stackoverflow.com/questions/63797340
复制相似问题