Minizin c Python - использование модуля .dzn вместо модуля экземпляра - PullRequest
1 голос
/ 29 апреля 2020

Представьте, что у меня есть файл .mzn с именем ab c .mzn, и он выглядит следующим образом.

array[1..3] of int:a;
output[show(a)];

Теперь у меня есть файл .dzn с именем cde.dzn, и он выглядит следующим образом.

 a=[1,2,3];

Я буду запускать пакет minizin c 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)

Вышеупомянутый код работает нормально, с этим проблем нет. Я заинтересован в использовании модуля dzn в этом * Код 1020 * вместо модуля 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..

1 Ответ

3 голосов
/ 29 апреля 2020

Модуль DZN в MiniZin c Python предназначен для использования по методу .add_file Instance / Model. Используя этот метод, вы можете добавить файлы данных (.dzn / .json) или дополнительные файлы модели .mzn к вашей модели или экземпляру MiniZin c.

Так для вашего примера получится:

from minizinc import Model

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