在数据文件中仅指定一维数组的单个索引
Specifying only a single index of a 1D array in a data file
考虑以下玩具模型,将其命名为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 ':'
是否可以在数据文件中只指定数组的单个索引?另一种方法是不使用数组,但也许这不是必需的。
一种方法是将第二个元素定义为 unknown/unassigned 值 (_
),例如
./minizinc -D "vert[0,_]" foo.mzn
这会产生两个解决方案:
vert: [0, 1]
vert: [0, 2]
考虑以下玩具模型,将其命名为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 ':'
是否可以在数据文件中只指定数组的单个索引?另一种方法是不使用数组,但也许这不是必需的。
一种方法是将第二个元素定义为 unknown/unassigned 值 (_
),例如
./minizinc -D "vert[0,_]" foo.mzn
这会产生两个解决方案:
vert: [0, 1]
vert: [0, 2]