我遇到的问题是如何将[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给我警告“模型不一致检测,在数组理解表达式中调用'forall',其中i = 0且j = 11”并输出“===== UNSATISFIABLE =====”。
如何让它发挥作用?
答案 0 :(得分:3)
(从我的评论中摘录答案。)
您的forall
循环尝试使用不同的值多次分配c [i],这是不允许的。在MiniZinc中,与传统的编程语言不同,决策变量无法重新分配。
我猜你的意思是在并行循环中添加:
constraint
forall(i in 0..9) ( c[i]=a[i]+b[i+10])
;