我有一个应该包含惩罚的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]);
}