用集合数组声明一个变量数组

Declaring an array of vars with an array of sets

我是 minizinc 的新手,这可能是一个简单的问题,但我无法在任何地方找到答案,所以我求助于这里。

我有这个数组:

set of int: N=1..n;
array[N] of set of int: x_d = [ { j | j in i+1..min(2*i,n-1) } | i in N];

n 可能会发生变化,它是外部输入的,所以我在编写这段代码时无法访问该值。我想要的是这个变量数组:

array[N] of var int: x;

仅限于上述集合。意思是,x[i] 应该限制在其对应的集合 x_d[i],其中 i 属于 [1, 2, ..., n]

constraint forall(i in N)(x[i] in x_d[i]);会满足您的需求吗?