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