用于minizing工具管道的python包装器。
pymzn的Python项目详细描述
PYMZN
pymzn是一个python库,它包装并增强了 MiniZinc约束编程工具。PYMZN建成 在minizinc工具包之上 提供许多现成的功能,以方便解决编码的问题 使用minizin语言,并将返回的解决方案作为python字典。
用法
首先,我们需要通过minizinc定义一个约束程序。 下面是一个用minizinc编码的简单0-1背包问题:
%% knapsack01.mzn %% int: n; % number of objects set of int: OBJ = 1..n; int: capacity; % the capacity of the knapsack array[OBJ] of int: profit; % the profit of each object array[OBJ] of int: size; % the size of each object var set of OBJ: x; constraint sum(i in x)(size[i]) <= capacity; var int: obj = sum(i in x)(profit[i]); solve maximize obj; %% knapsack01.dzn %% n = 5; profit = [10, 3, 9, 4, 8]; size = [14, 4, 10, 6, 9];
您可以使用pymzn.minizinc
函数来解决上述问题:
importpymznsolns=pymzn.minizinc('knapsack01.mzn','knapsack01.dzn',data={'capacity':20})print(solns)
结果将是:
[{'x':{3,5}}]
返回的对象是一个延迟的解决方案流,可以迭代或
作为列表直接索引。pymzn.minizinc
函数负责
预处理、与minizinc
可执行文件的通信以及解析
的解决方案流到python字典中。
PYMZN还可以:
- 将python字典转换为
dzn格式和返回(例如,当
将数据传递给
pymzn.minizinc
函数); - 与许多不同的 solvers;
- Preprocess微型锌模型 通过嵌入来自Jinja2模板的代码 语言;
- 执行concurrent微量锌 使用python协同程序执行。
有关上一示例的后续信息,请阅读 PyMzn tutorial。
有关pymzn类和函数的更多信息,请参阅 reference manual。
安装
PYMZN可以通过PIP安装:
pip install pymzn
或者从可用的源代码 在GitHub:
python setup.py install
要求
pymzn是在python 3.5中开发和维护的。从0.18.0版开始,
对Python2和3.5之前的版本的支持已经被放弃了(它也是
维护它们的工作很多)。使用包pymzn.aio
进行并发
执行需要Python3.6(尽管它是可选的)。
Pymzn要求在您的计算机上安装minizin工具包。启动 从pymzn 0.18.0开始,所需的最小minizinc版本是2.2.0。如果你 需要使用以前版本的minizin,pymzn 0.17.1应该可以正常工作。
安装minizinc的最简单方法是下载
MiniZincIDE包,其中
包含minizinc二进制文件和多个解算器。下载后
包,通过设置
PATH
环境变量或通过使用pymzn.config
配置它
模块。
有关更多详细信息,请查看 Install section在 文档。
可选依赖项包括:
作者
Paolo Dragone,美国国立大学博士生 特伦托(意大利)。