我正在使用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是二元决策变量。我真的不确定为什么会这样,我会感激任何帮助!
答案 0 :(得分:1)
逻辑约束(例如add_if_then)需要CPLEX 12.8运行时才能解决。如果在PYTHONPATH中运行带有旧版本CPLEX的DOcplex,则应引发错误。
如果在PYTHONPATH中找不到CPLEX,那么DOcplex无法猜测您将使用哪个版本(您可能希望向DOcplexcloud提交Python作业,在这种情况下,您的模型将使用CPLEX 12.8运行时解决)
生成的LP文件包含逻辑等效语法(&lt; - &gt;),旧版本的CPLEX可能无法读取该语法。同样,解决此类LP的最佳方法是通过升级本地库或转到云来使用CPLEX 12.8。