Как создать файл .dzn, используя R или Python в мини-цинке - PullRequest
0 голосов
/ 22 февраля 2019

В основном я использую R и python для анализа данных.

Как использовать R или Python или другой язык общего назначения для создания файла .dzn для модели minizinc

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

Пакет 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;
0 голосов
/ 22 февраля 2019

Хотя .dzn файлы являются традиционными файлами ввода данных для моделей MiniZinc, более новые версии драйвера MiniZinc могут использовать JSON.И R, и Python могут легко генерировать JSON из данных.Пример для создания данных JSON для следующей модели: model.mzn:

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

...