MiniZinc: 约束建模语言
来源:互联网 发布:詹姆斯沃西生涯数据 编辑:程序博客网 时间:2024/06/06 18:27
MiniZinc是一个适度的约束建模语言. 它高级到足以易于表示绝大多数约束问题, 低级到易于和一致地转化为已存在的求解器. 它是高级语言Zinc的一个子集. 希望能够被约束编程社区采纳成为一个标准. 以下两个网址有足够的资料供感兴趣的人们来学习.
官方网站: http://www.g12.cs.mu.oz.au/minizinc/
开发者网站:http://www.hakank.org/minizinc/
1. 介绍
MiniZinc是一个在整数和实数上进行约束优化的语言。MiniZinc模型并未指定如何求解,虽然可以通过包含评注来指导求解器的运行。
MiniZinc易于与不同的后端求解器对接。它首先把输入的MiniZinc模型和数据转换成FlatZinc模型。FlatZinc模型由变量声明和约束定义构成,当然对于优化问题还要定义目标函数。针对单个的后端求解器从MiniZinc到FlatZinc的转换可以特化,因此这能够控制最终形成的约束。特别地,MiniZinc通过分解对全局约束进行特化。
2. MiniZinc建模入门
本节通过两个简单实例来介绍MiniZinc模型的基本结构。
2.1 示例1
图1 澳大利亚区划
想象一下,我们希望如图1所示的澳大利亚地图进行染色。它有七个州或区域构成,每个州染一种颜色满足相邻的州颜色不同。
我们能够非常容易地使用MiniZinc建立这个问题的模型。模型见图2。模型的第一行是注释,用%做为注释的先导符号。MiniZinc并没用 / 开始结束的注释块。
% Colouring Australia using nc coloursint: nc = 3;var 1..nc: wa; var 1..nc: nt; var 1..nc: sa; var 1..nc: q;var 1..nc: nsw; var 1..nc: v; var 1..nc: t;constraint wa != nt;constraint wa != sa;constraint nt != sa;constraint nt != q;constraint sa != q;constraint sa != nsw;constraint sa != v;constraint q != nsw;constraint nsw != v;solve satisfy;output ["wa=", show(wa), "\t nt=", show(nt), "\t sa=", show(sa), "\n","q=", show(q), "\t nsw=", show(nsw), "\t v=", show(v), "\n","t=", show(t), "\n"];
图2 澳大利亚区划地图染色的MiniZinc模型aust.mzn
- MiniZinc: 约束建模语言
- Minizinc的环境配置
- 约束规划建模技巧总结---中间变量和全局约束
- poj1275 差分约束难再建模
- POj 1364 差分约束系统建模
- Minizinc 中的include 与 alldifferent
- 统一建模语言简介
- 统一建模语言UML
- uml统一建模语言
- 统一建模语言
- 统一建模语言简介
- 统一建模语言
- 统一建模语言
- UML 统一建模语言
- 统一建模语言UML
- 统一建模语言UML
- 统一建模语言 (UML)
- 统一建模语言
- 深入理解typedef
- Linux--原始套接字
- JOJ1148:Prime Cuts
- Android 触摸屏驱动代码分析(ADC 类型触摸屏 CPU:s3c-s5pc100)
- linux makefile学习
- MiniZinc: 约束建模语言
- String,StringBuffer,StringBuilder 之间区别
- css笔记
- VS2008 automation服务器不能创建对象
- 模拟页面调度算法——1
- 降采样,过采样,欠采样,子采样,下采样
- AlarmManager的使用
- 博客第一个帖子,hello world!
- XML(一)--基本概念