MiniZinc 决策变量非连续范围

MiniZinc decision variable non contiguous range

除了写入太多约束之外,当数组决策变量不是连续的整数序列时,定义数组决策变量范围的最佳方法是什么?

一个例子: 枚举产品 ={product_1,product_2,product_3,product_4};

array [PRODUCTS] of var 0..2 : x; // 连续的 array [PRODUCTS] of var 0,3,10 : y; ///非连续序列和错误

我也试过 整数集

比如 整数集:y_range= 0,1,3;

枚举产品 ={product_1,product_2,product_3,product_4};

array [PRODUCTS] of var 0..2 : x; // 连续的 array [PRODUCTS] of var y_range : y; ///非连续序列和错误

但没有成功..

MiniZinc 中允许使用非连续域。看来您只是在语法上犯了一个错误。以下代码有效:

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

请注意,初始化变量域的非连续集合文字需要大括号 ({})。