我正在尝试在 Python 中运行 CPLEX .mod 文件。有关如何执行此操作的讲师位于以下链接中:
如何使用 python 运行 .mod 文件 (CPLEX)?
但似乎(也许)只有元组从 Python 发送到 CPLEX。就我而言,CPLEX .mod 文件中有一个循环,如下所示:
for (var i = lowerBound; i <= upperBound; i++) {
...
}
我想将参数 lowerBound 和 upperBound 从 Python 发送到 CPLEX .mod 文件。为此,我在 CPLEX .mod 文件内、for 循环之前定义了一个变量,如下所示:
var lowerBound = ...;
var upperBound = ...;
然后,我在 Python 中使用以下命令:
from doopl.factory import *
with create_opl_model(model="model.mod") as opl:
opl.set_input("upperBound", 50)
opl.set_input("lowerBound", 1)
opl.run()
但出现以下错误:
ERROR at 17:18 model.mod: Scripting parser error: missing expression.
我想说的是,在 CPLEX .mod 中,第 17 行和第 18 行是:
var lowerBound = ...;
var upperBound = ...;
问题:我想知道是否只发送元组opl.set_input ()?为了理解这一点,我做了如下的事情:
CPLEX .mod 内部:
tuple bounds {
int lowerBound;
int upperBound;
}
for (var i = lowerBound; i <= upperBound; i++) {
...
}
Python 内部:
from doopl.factory import *
Bounds = [
(1, 50),
]
with create_opl_model(model=" model.mod") as opl:
opl.set_input("bounds", Bounds)
opl.run()
但这一次,出现了如下错误:
ERROR at 20:7 model.mod: Scripting parser error: missing ';' or newline between statements.
我想说的是,在 CPLEX .mod 文件中,第 20 行与元组边界的定义相关,即:
tuple bounds {
int lowerBound;
int upperBound;
}
有什么办法可以解决这个问题?
慕神8447489
相关分类