Optimization 使用Java google或工具CP-SAT添加
我需要使用添加以下约束: (x+y+z)/(x+y+z+k)<10 方法签名为:Optimization 使用Java google或工具CP-SAT添加,optimization,or-tools,cp-sat-solver,Optimization,Or Tools,Cp Sat Solver,我需要使用添加以下约束: (x+y+z)/(x+y+z+k)
Constraint addDivisionEquality (IntVar target, IntVar num, IntVar denom)
在哪里
但是现在我需要将分子和分母定义为IntVar
类型,而它们是多个IntVar的总和
Java包提供了一个名为sum IntVar的类,但是adddivision
方法需要IntVar
。我希望它会变得更好
如何将分子和分母定义为IntVar
类型
IntVar numerator = model.newIntVar(0, 10, "(x+y+z)");
model.addEquality(target, LinearExpr.sum(new IntVar[] {x, y, z}));
话虽如此
model.addLessThan(LinearExpr.sum(new IntVar[] {x, y, z}),
LinearExpr.scalProd(new IntVar[] {x, y, z, k}, new int[] {10, 10, 10, 10}));
这要简单得多
最后,如果所有变量都为正
(x + y + z) / (x + y + z + k) is always <= 1
(x+y+z)/(x+y+z+k)总是
(x + y + z) / (x + y + z + k) is always <= 1