【发布时间】:2020-04-29 02:45:56
【问题描述】:
假设我有一个名为 abc.mzn 的 .mzn 文件,它如下所示。
array[1..3] of int:a;
output[show(a)];
现在我有一个名为 cde.dzn 的 .dzn 文件,如下所示。
a=[1,2,3];
我将运行 minizinc python 包如下,
import minizinc as minizinc
from minizinc import Instance,Model,Solver
x=Solver.lookup("geocode")
M1=Model("./abc.mzn")
instance1=Instance(x,M1)
instance1("a")=[1,2,3]
result = instance1.solve()
print(result)
上面的代码工作正常,没有问题。我热衷于在这个 python 代码中使用 dzn 模块而不是 Instance 模块,并摆脱手动分配下面的行。 如您所见,我们需要使用 instance1=.. 手动为所有参数分配值。
instance1("a")=[1,2,3]
有什么方法可以使用 .dzn 文件来分配值(使用 dzn 模块)。我注意到在包本身中我们已经有 dzn 模块。
我们可以通过以下方式或如何获得结果。
import minizinc as minizinc
from minizinc import dzn,Model,Solver
M1=Model("./abc.mzn")
D1=dzn("./cde.dzn") etc..
【问题讨论】: