如何在Minizinc中从没有变量名的.dzn文件中读取

Ell*_*lla 0 minizinc

我是 Minizinc 的新手,我遇到了一个问题。我有包含这个的 .dzn 文件

10 7
4
3 2
3 5
4 3
5 5
Run Code Online (Sandbox Code Playgroud)

我希望将其读入我的文件,第一行10 7另存为h=10and w=7,下一行4另存为n=4,最后几行另存为数组dims=[[3,2],[3,5],[4,3],[5,5]]。然而,我还没有找到如何做到这一点,因为在教程中我已经阅读了 .dzn 文件中的变量已经命名,因此可以在 .mzn 文件中轻松调用,即使用命令int: w;。有没有办法在不更改 .dzn 文件的情况下命名 MiniZinc 文件中的整数?

非常感谢

Dek*_*er1 5

一个dzn文件是不是包含数据的MiniZinc模型的任何文件。这些文件遵循严格的格式,所有数据都以表格形式给出

<ident> = <expression>;
Run Code Online (Sandbox Code Playgroud)

这就是为什么您的文件不是dzn文件的原因。目前 MiniZinc 仅支持dzn格式或json格式中的直接数据。编译器无法读取其他格式。MiniZinc 语言目前没有能力为自定义数据文件创建解析器。

如果您的数据仅以这种格式给出,那么有两种选择可以将它们与 MiniZinc 一起使用:

  1. 您可以编写一个小脚本,将描述的格式转换为jsondzn。这可以用任何编程语言完成。
  2. 您可以使用 MiniZinc Python 脚本前端:使用 Python 您可以解析数据,而 MiniZinc 模块将允许您直接将数据分配给实例。