Переменная решения MiniZinc, несмежный диапазон - PullRequest
0 голосов
/ 30 августа 2018

Каков наилучший способ определения диапазона переменной решения массива, если она не является непрерывной последовательностью целых чисел, кроме записи слишком большого количества ограничений?

Пример: enum PRODUCTS = {product_1, product_2, product_3, product_4};

массив [PRODUCTS] из var 0..2: x; // смежный массив [ПРОДУКТЫ] var 0,3,10: y; /// несмежная последовательность и ошибка

я пробовал также с набор int

таких как набор int: y_range = 0,1,3;

enum PRODUCTS = {product_1, product_2, product_3, product_4};

массив [PRODUCTS] из var 0..2: x; // смежный массив [PRODUCTS] из var y_range: y; /// несмежная последовательность и ошибка

но не получилось ..

1 Ответ

0 голосов
/ 30 августа 2018

В MiniZinc разрешены не непрерывные домены. Кажется, вы просто ошиблись в своем синтаксисе. Работает следующий код:

enum PRODUCTS ={product_1,product_2,product_3,product_4};
array [PRODUCTS] of var {0,3,10} : y;

Обратите внимание, что для литерала не непрерывного набора, который инициализирует домены ваших переменных, нужны фигурные скобки ({}).

...