CPLEX12.9: 是否不适用于混合整数问题的强分支?

2024-09-30 06:26:50 发布

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

我想通过cplex和python获得强分支分数,第一步我只是尝试使用“cplex.advanced.strong\u branching”来解决一个非常简单的MILP问题(我的代码完全遵循了这个函数的示例用法)。但是它告诉我“CPLEX错误1017:不适用于混合整数问题”,这让我很困惑,因为SB应该是一个传统的分支定界算法。但当我用它来解决一个线性规划问题时,效果很好

错误似乎是从“CPXStand分支”,一个C/C++基础API提出的,这也让我质疑CPLEX如何在将分支策略参数设置为SB时做出SB决策。类似的问题是,我知道pythonapi没有重要的“CPXgetcallbacknodelp”函数,那么“cplex.advanced.strong\u branching”如何工作呢?可能是这个错误的原因吗

我不完全理解“CPXstrongbranch”在C中是如何工作的,所以下面的信息可能是不正确的:我试图在示例“adlpex1.C”的用户集分支回调中使用“CPXstrongbranch”,并且出现了相同的错误;它阻止了我使用“ctypes”来获取“CPXgetcallbacknodelp”函数

可能是版本问题吗?Cplex是否阻止某人进入?因为我读过一篇论文,它依赖于cplex12.6.1和capi中的SB分数。或者我只是犯了些错误

我的问题是Cplex是否可以做SB并在MILP问题中向用户提供结果


Tags: 函数用户示例错误分支分数advancedsb
1条回答
网友
1楼 · 发布于 2024-09-30 06:26:50

cplex.advanced.strong_branching不执行任何分支。医生有点糊涂。此函数的作用是计算传递的变量(如果未传递列表,则为所有变量)的强分支分数

这需要一个LP,因为通常在MIP搜索树中,您使用当前LP调用此函数

如果要将CPLEX与强分支一起使用,请将变量选择参数设置为“强分支”:

with cplex.Cplex() as cpx:
    cpx.parameters.mip.strategy.variableselect.set(cpx.parameters.mip.strategy.variableselect.values.strong_branching)
    cpx.solve()

只有当您想实现自己的分支算法时才需要strong_branching函数

相关问题 更多 >

    热门问题