Minizinc Python - 使用 .dzn 模块而不是实例模块

Minizinc Python - using .dzn module instead of instance module

假设我有一个名为 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)

上面的代码工作正常,that.I 没有问题我很想在此 python 代码中使用 dzn 模块而不是实例模块,并摆脱手动分配下面的行。 如您所见,我们需要使用 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..

MiniZinc Python 中的 DZN 模块旨在通过 Instance/Model.add_file 方法使用。使用此方法,您可以将数据文件 (.dzn/.json) 或其他模型文件 .mzn 添加到您的 MiniZinc 模型或实例。

因此对于您的示例将变为:

from minizinc import Model

M1 = Model("./abc.mzn")
M1.add_file("./cde.dzn")