在编写MiniZinc模型时,我经常声明多个这样的变量:
var int: dog;
var int: cat;
var int: bird;
var int: mammal;
var int: horse;
我试图在一行上声明所有这些变量,但它产生了语法错误:
var int: dog, cat, bird, mammal, horse;
是否可以使用一个语句以更简洁的方式声明所有这些变量?
答案 0 :(得分:1)
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:狗"等等。