MiniZinc:如何对等长子数组求和?

MiniZinc: how to sum equal-length subarrays?

我遇到的问题是如何将a[0..9]中的变量添加到b[10..19]中。 我的代码是:

array[0..19] of int: a=array1d(0..19,[0,1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1,0]);
array[0..19] of int: b=array1d(0..19,[9,8,7,6,5,4,3,2,1,0,0,1,2,3,4,5,6,7,8,9]);
array[0..9] of var int: c;
constraint
    forall(i in 0..9, j in 10..19)
    (
        c[i]=a[i]+b[j]
    );
solve satisfy;
output[show(c[i]) | i in 0..9];

但是,MiniZinc 给了我警告 "model inconsistency detected, in call 'forall' in array comprehension expressionwith i = 0 with j = 11" 并输出“=====UNSATISFIABLE=====”。

如何让它工作?

(从我的评论中提取答案。)

您的 forall 循环尝试多次为 c[i] 分配不同的值,这是不允许的。在 MiniZinc 中,与传统编程语言不同,决策变量不能重新分配。

我猜你的意思是在并行循环中进行加法:

constraint  
  forall(i in 0..9) ( c[i]=a[i]+b[i+10])
;