Указание только одного индекса одномерного массива в файле данных - PullRequest
2 голосов
/ 25 апреля 2019

Рассмотрим следующую игрушечную модель, назовите ее foo.mzn:

int: n = 2;
array[1..n] of var 0..2: vert;

constraint vert[1] != vert[2];

solve satisfy;

В документации (Листинг 2.2.3) показан пример, в котором файл данных задает весь массив.То есть вы могли бы сделать:

./minizinc -D "vert=[0,1]" foo.mzn

Однако, что если я хочу указать только один индекс массива?Разумно иметь возможность сделать:

./minizinc -D "vert[1]=0" foo.mzn

, но это приводит к

Error: syntax error, unexpected =, expecting ':'

Можно ли указать только один индекс массива в файле данных?Альтернатива - обойтись без массива, но, возможно, в этом нет необходимости.

1 Ответ

3 голосов
/ 25 апреля 2019

Один из способов - определить второй элемент как неизвестное / неназначенное значение (_), например,

./minizinc -D "vert[0,_]" foo.mzn

. Это дает два решения:

vert: [0, 1]
vert: [0, 2]
...