CPLEX:通过pythonapi访问强分支值

2024-09-30 06:14:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用CPLEX(12.9)及其Python(3.6)API研究混合整数编程的一些高级分支启发式算法。 部分分支决策应基于变量的强分支(SB)得分。 虽然我可以通过API直接查询变量的伪成本分数[1],但似乎没有简单的方法可以得到计算出的SB分数。 因此,我想实现我自己的计算。我发现了一篇旧的论坛帖子,描述了如何使用C-API尽可能高效地实现强分支计算[2]。不幸的是,所描述的方法使用库调用(比如CPXgetcallbacknodelp()),我找不到相应的python方法。你知道吗

这给我留下了三个问题:

  1. 是否有API调用来获取我错过的SB分数?你知道吗
  2. 我忽视了Python吗 CPXgetcallbacknodelp()等的包装器。?你知道吗
  3. 有什么简单的方法可以添加 对cplex python包装器不支持的C-API调用的包装器 (可能通过扩展SWIG生成的python文件)?你知道吗

[1]https://www.ibm.com/support/knowledgecenter/SSSA5P_12.9.0/ilog.odms.cplex.help/refpythoncplex/html/cplex.callbacks.ControlCallback-class.html

[2]https://www.ibm.com/developerworks/community/forums/html/threadTopic?id=77777777-0000-0000-0000-000014479565&ps=25


Tags: 方法httpscomapihtmlwww编程分支
1条回答
网友
1楼 · 发布于 2024-09-30 06:14:51

无法通过CPLEX Python API直接访问nodelp。如果使用从HSCallback继承的回调之一,则可以对其调用solve(),以此类推

您可以做的是(尽管这可能不是很有效)克隆原始问题,在创建回调时将其传递给回调,然后在每个节点上调用Cplex.advanced.strong_branching()。你知道吗

相关问题 更多 >

    热门问题