[我正在使用Choco 3.3.3]一個IntVar巧克力abs不工作
我有一個IntVar a和一個int b。我想將差異保存到IntVar []數組d中。我以完全相同的方式在代碼的另一個位置完成了這項工作,並且它沒有任何問題,但在這裏我只是不明白它的作用。
d = VF.boundedArray("d", num_ts, -20, 20, solver);
for(int t=0; t < num_ts; t++){
IntVar a = VF.bounded("a", 0, 10, solver);
solver.post(ICF.sum(aa[t], a)); //values are [2,2,2,1,2,2]
int b = bb[t][j]; //values are [2,3,2,2,2,2]
IntVar c = VF.offset(a, -b);
...//see below
}
當我只是用c(d [T] = C)打印出d的值時,其結果是[0,-1,0,-1,0,0],但我需要的是,絕對,所以[0,1,0,1,0,0]
這些是我已經嘗試了不同的東西和d的結果:
d[t] = VF.abs(c); //result [0,0,0,0,0,0]
solver.post(ICF.times(c, -1, d[t])); //result [-7,-6,-7,-7,-7,-7]
solver.post(ICF.sum(new IntVar[]{VF.minus(a), VF.fixed(b, solver)}, d[t])); //result [-7,-6,-7,-7,-7,-7]
solver.post(ICF.arithm(a, "+", d[t], "=", b)); //result [-7,-6,-7,-7,-7,-7]
solver.post(ICF.distance(VF.fixed(b, solver), a, "=", d[t])); //result [-20, -20, -20, -20, -20, -20]
誰能告訴我在做什麼錯了?我特別困惑於[-7,-6,-7,-7,-7,-7]從哪裏來...
你解決了嗎? – dabadaba