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