如何在minizinc中使用R或python生成.dzn文件

时间:2019-02-22 02:54:36

标签: minizinc

我主要使用R和python进行数据分析。

如何使用R或python或其他通用语言为minizinc模型生成.dzn文件

2 个答案:

答案 0 :(得分:3)

尽管.dzn文件是MiniZinc模型的传统数据输入文件,但较新版本的MiniZinc驱动程序可以使用JSON。 R和Python都可以轻松地从数据生成JSON。为以下模型model.mzn生成JSON数据的示例:

int: n;
array[1..n] of bool: arr;
float: f;

导出简单的python数据:

import json

data = {
    "n": 4,
    "arr": [True, False, False, True],
    "f": 2.75,
}

with open('data.json', 'w') as outfile:
    json.dump(data, outfile)

此python脚本将创建一个包含数据的文件data.json。 MiniZinc现在可以直接使用生成的文件:minizinc --solver gecode model.mzn data.json

答案 1 :(得分:0)

pymzn软件包支持将python dicts转换为dzn文件:http://paolodragone.com/pymzn/reference/dzn/index.html

一个例子可能看起来像

from pymzn import dzn
data = {
    "n": 4,
    "arr": [True, False, False, True],
    "f": 2.75,
}
with open("example.dzn", "w") as f:
    f.write("\n".join(dzn.dict2dzn(data)))

example.dzn的内容将为:

n = 4;
arr = array1d(1..4, [true, false, false, true]);
f = 2.75;