Choco对IntVar进行平方

时间:2016-03-30 14:59:37

标签: java constraints modeling choco

我有一个应该包含惩罚的IntVar数组。它们是通过将a和b的差值乘以attr [2]来计算的。但是如果attr [3]为1,我想在乘以attr [2]之前平方差。我无法找到一个能够做到这一点的视图,但是到目前为止,我尝试的方法需要更长时间才能找到解决方案,如果我这样做,我会收到一个断言错误。有没有办法实现我想要做的事情?

if(attr[3] == 1){
  IntVar difSq = VF.bounded("squared difference", 0, 500, solver);
  solver.post(ICF.square(difSq, VF.abs(VF.offset(a, -b))));
  penalty[i] = VF.scale(difSq, attr[2]);
}else{
  penalty[i] = VF.scale(VF.abs(VF.offset(a, -b)), attr[2]);
}

0 个答案:

没有答案