最近在Coursera上学了 离散优化建模,里面介绍了MiniZinc这个建模语言,个人觉得比较新奇
基本语法
-
MiniZinc 语句顺序不重要
- 你可以先定义变量再写表达式,这不是一个需要编译或者逐句解释得语言
- 写的程序主要是为了给后端得求解器描述问题
-
关于变量
- MiniZinc变量类型主要分为两大类
- 参数
- 决策变量
- MiniZinc变量类型主要分为两大类
其中参数类似于其他语言中的常量,只能在程序开始的时候被赋值而且只能被赋值一次
决策变量相当于其他语言中普通的可变变量
可以看到,MiniZinc对于变量声明方式也是比较特殊的,形式为变量类型描述:变量名称
当然,这两个分类只是从变量是不是常量的角度划分的
MiniZinc像其他语言一样,支持整数、浮点,数组、字符串、枚举、集合等类型
比如生成一个大小为10的int类型数组
- 1…10代表范围1~10
- 数组统一用array[]表示,方括号里边写数组包含的下标,图里的数组可以访问的下标范围是1~10
- 数组的下标可以是任意的类型(文字什么的也都可以,类似于字典,不过只能一对一)