ペナルティを含む IntVar 配列があります。これらは、a と b の差に attr[2] を掛けて計算されます。しかし、attr[3] が 1 の場合、attr[2] を掛ける前に差を 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]);
}