MiniZinc决策变量非连续范围

时间:2018-08-30 12:48:49

标签: variables range minizinc

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

一个例子: 枚举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; ///非连续的序列和错误

但没有解决。.

1 个答案:

答案 0 :(得分:1)

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

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

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