Optimization docplex.mp.model.add_添加的约束如果_导致CPlex读取错误

Optimization docplex.mp.model.add_添加的约束如果_导致CPlex读取错误,optimization,cplex,integer-programming,mixed-integer-programming,Optimization,Cplex,Integer Programming,Mixed Integer Programming,我正在使用docplex建立一个混合整数程序,然后通过cplex进行求解。但是,在尝试解决MIP时,我收到以下错误: CPLEX> read plan.lp CPLEX Error 1434: Line 184224: Couldn't convert '1<->' to a number. No file read. 其中ilp是docplex.mp.model对象,每个select_变量是一个二进制决策变量。我真的不确定为什么会发生这种情况,我非常感谢任何帮助 逻辑约束

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

CPLEX> read plan.lp
CPLEX Error  1434: Line 184224: Couldn't convert '1<->' to a number.
No file read.
其中ilp是docplex.mp.model对象,每个select_变量是一个二进制决策变量。我真的不确定为什么会发生这种情况,我非常感谢任何帮助

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

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


生成的LP文件包含逻辑等价语法(),旧版本的CPLEX可能无法读取该语法。同样,解决此类LPs的最佳方法是使用CPLEX 12.8,方法是升级本地库或访问云。

作为一种解决方法,您可以尝试以SAV格式而不是LP格式从docplex导出模型。看,没有这样的运气。我在这个项目中使用Python3,但我目前运行的是cplex 12.6.0。此版本的cplex不支持python 3,由于export_as_sav需要访问cplex python模块,我无法以sav格式编写模型。如果可能,您可以通过免费社区版或学术倡议尝试使用最新版本(参见链接)。
1 <->
M13790
+ M13791
>= 1
ilp.add_if_then(
    ilp.sum([x.select_var for x in self.allX]) >= 1,
    self.select_var == 1,
)