MiniZinc中没有枚举类型或类似。有一些提示说,在某些类型的枚举中将包含在未来的版本中,尽管我很确定它是否可以与决策变量一起工作(“var int”),也许它只是参数(常量)变量。
这里有一些有希望的相关旁注。
我倾向于做的是使用决策变量的数组:
int: n = 5;
array[1..n] of var int: x;
然后可以使用X [1]等。显式阵列也经常需要 - 或者至少方便 - 在模型以简化某些约束条件,如“all_different”等。
但是,在约束中使用命名变量通常会更好。
如果您还想在模型中使用名称变量,则必须使用名称定义它们并将它们连接到“x”数组。
var int: dog = x[1];
var int: cat = x[2];
var int: bird = x[3];
var int: mammal = x[4];
var int: horse = x[5];
或者以另一种方式然后连接:
int: n = 5;
var int: dog;
var int: cat;
var int: bird;
var int: mammal;
var int: horse;
array[1..n] of var int: x = [dog,cat,bird,mammal,horse];
[和我通常定义为小域尽可能为变量,例如“var 1..10:狗”等]