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;
请注意,初始化变量域的非连续集合文字需要大括号 ({}
)。
除了写入太多约束之外,当数组决策变量不是连续的整数序列时,定义数组决策变量范围的最佳方法是什么?
一个例子: 枚举产品 ={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;
请注意,初始化变量域的非连续集合文字需要大括号 ({}
)。