var 1..5: k=1;
array[1..2] of var 1..48: key2;
constraint forall(i in 1..4,j in 1..48 where k= ceil(j/24))(if
table[i,j]!=0 then key2[k]=j else true endif);
我试图在我的minizinc程序中应用这个约束。目的是最大化成本函数,这是约束之一但是当我运行这个代码时它显示
Finished in 203msec
Compiling first.mzn with data empdata2.dzn
Running first.mzn
=====UNSATISFIABLE=====
Finished in 189msec
如果我用true替换key2 [k] = j,那么它编译并运行没有任何错误。 我没有在我的程序中的任何其他地方使用key2数组。我正在使用数据文件来提供输入,并且我已初始化key2数组为key2 = [1,1]。 我是minizinc的初学者,我不明白为什么在这种情况下将数字赋给数组有问题?
答案 0 :(得分:1)
我运行了以下模型,它为Gecode和G12fd求解器提供了许多解决方案(使用“求解满足”)。您使用哪种MiniZinc版本?我使用最新的Git版MiniZinc 2.0,与v2.0.2大致相同。
var 1..5: k=1;
array[1..2] of var 1..48: key2;
array[1..4,1..48] of var 0..1: table;
solve satisfy;
constraint forall(i in 1..4,j in 1..48 where k= ceil(j/24))(if
table[i,j]!=0 then key2[k]=j else true endif);
output [
"key2:", show(key2), "\n",
"table: ", show(table), "\n",
];
您在此处未显示的模型中是否有其他约束?