gpt4 book ai didi

optimization - docplex.mp.model.add_if_then 添加的约束导致 CPlex 读取错误

转载 作者:行者123 更新时间:2023-12-03 16:56:47 24 4
gpt4 key购买 nike

我正在使用 docplex 构建一个混合整数程序,然后通过 cplex 对其进行求解。但是,在尝试解决 MIP 时,我收到以下错误:

CPLEX> read plan.lp
CPLEX Error 1434: Line 184224: Couldn't convert '1<->' to a number.
No file read.

查看lp文件,可以看出下面一行是问题所在:

1 <->
M13790
+ M13791
>= 1

创建约束的行是:

ilp.add_if_then(
ilp.sum([x.select_var for x in self.allX]) >= 1,
self.select_var == 1,
)

其中 ilp 是 docplex.mp.model 对象,每个 select_var 是一个二元决策变量。我真的不确定为什么会发生这种情况,如果有任何帮助,我将不胜感激!

最佳答案

逻辑约束(例如 add_if_then)需要 CPLEX 12.8 运行时才能求解。如果您在 PYTHONPATH 中使用较旧版本的 CPLEX 运行 DOcplex,则应该引发错误。

如果在 PYTHONPATH 中找不到 CPLEX,则 DOcplex 无法猜测您将使用哪个版本(您可能希望将 Python 作业提交到 DOcplexcloud,在这种情况下,您的模型将使用 CPLEX 12.8 运行时求解)

生成的 LP 文件包含逻辑等价语法 (<->),旧版本的 CPLEX 可能无法读取它。同样,解决此类 LP 的最佳方法是通过升级本地库或转到云端来使用 CPLEX 12.8。

关于optimization - docplex.mp.model.add_if_then 添加的约束导致 CPlex 读取错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49040913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com