除了编写太多的约束之外,当它不是一个连续的整数序列时,定义数组决策变量范围的最佳方法是什么?
例如:枚举产品= {product_1,product_2,product_3,product_4};
数组[产品] var 0..2:x; // var 0,3,10:y的连续数组[PRODUCTS]; ///非连续的序列和错误
我也尝试使用int的集合
例如int:y_range = 0,1,3;
枚举产品= {product_1,product_2,product_3,product_4};
数组[产品] var 0..2:x; // var y_range的连续数组[PRODUCTS]:y; ///非连续的序列和错误
但没有成功..
MiniZinc允许使用非连续域。你的语法似乎只是犯了一个错误。以下代码有效:
enum PRODUCTS ={product_1,product_2,product_3,product_4};
array [PRODUCTS] of var {0,3,10} : y;
请注意,初始化变量域的非连续集合文字需要大括号({}
)。