考虑以下玩具模型,将其命名为foo.mzn
:
int: n = 2;
array[1..n] of var 0..2: vert;
constraint vert[1] != vert[2];
solve satisfy;
The documentation (Listing 2.2.3)显示了一个示例,其中数据文件指定了整个数组。也就是说,您可以这样做:
./minizinc -D "vert=[0,1]" foo.mzn
但是,如果我只想指定数组的一个索引怎么办?能够做到的感觉很合理:
./minizinc -D "vert[1]=0" foo.mzn
但这会导致
Error: syntax error, unexpected =, expecting ':'
是否可以仅在数据文件中指定数组的单个索引?一种替代方法是不使用数组而删除,但这也许不是必需的。
答案 0 :(得分:3)
一种方法是将第二个元素定义为未知/未分配的值(_
),例如
./minizinc -D "vert[0,_]" foo.mzn
这产生两个解决方案:
vert: [0, 1]
vert: [0, 2]