【问题标题】:Minizinc Python - using .dzn module instead of instance moduleMinizinc Python - 使用 .dzn 模块而不是实例模块
【发布时间】: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..

【问题讨论】:

    标签: python minizinc


    【解决方案1】:

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

    所以你的例子会变成:

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

    【讨论】:

      猜你喜欢
      • 2021-07-03
      • 2017-02-23
      • 2014-06-29
      • 2020-04-11
      • 2011-08-05
      • 2019-11-28
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多