我正在研究一些高级的分支启发法,以通过其Python(3.6)API使用CPLEX(12.9)进行混合整数编程。 分支决策的一部分应基于变量的强分支(SB)分数。 虽然我可以直接通过API [1]查询变量的伪成本得分,但似乎没有简单的方法来获取计算得出的SB得分。 因此,我想自己执行计算。我在论坛上发了一个老帖子,描述了如何使用C-API尽可能有效地实现强大的分支计算[2]。不幸的是,所描述的方法使用了库调用(例如CPXgetcallbacknodelp()),而我找不到对应的python方法。
这给我留下了三个问题:
答案 0 :(得分:3)
无法通过CPLEX Python API来直接访问nodelp。如果您使用从HSCallback继承的回调之一,则可以在其上调用solve()
,等等。
您可以做的(虽然可能并不高效)是克隆原始问题,在创建它时将其传递给回调,然后在每个节点调用Cplex.advanced.strong_branching()。