【发布时间】:2017-11-15 05:42:48
【问题描述】:
我遇到的问题是如何将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 给我警告“检测到模型不一致,在 i = 0 和 j = 11 的数组理解表达式中调用 'forall'”并输出“=====UNSATISFIABLE=====”。
如何让它工作?
【问题讨论】:
-
你
forall循环尝试多次分配 c[i] 不同的值,这是不允许的。也许您的意思是在并行循环中添加:forall(i in 0..9) ( c[i]=a[i]+b[i+10])? -
好的,谢谢,可以了。好吧,您的意思是决策变量具有与参数相似的特征(即一个参数只能被赋予一个值),对吧?
-
是的,与传统编程语言不同,在 MiniZinc 中不能重新分配决策变量。
标签: minizinc