倍增/添加Google或Tools IntVar';Java中的s和常量
目前,我开始在Java中使用Google或Tools CP Sat Solver,并面临一些简单数学方程的问题,包括常数和内部工具“IntVar” 我的问题的一个小例子:倍增/添加Google或Tools IntVar';Java中的s和常量,java,optimization,or-tools,cp-sat-solver,Java,Optimization,Or Tools,Cp Sat Solver,目前,我开始在Java中使用Google或Tools CP Sat Solver,并面临一些简单数学方程的问题,包括常数和内部工具“IntVar” 我的问题的一个小例子: // Variables IntVar a = model.newIntVar(0, 5, "a"); IntVar b = model.newIntVar(0, 5, "b"); int c = 1; // Constraint mod
// Variables
IntVar a = model.newIntVar(0, 5, "a");
IntVar b = model.newIntVar(0, 5, "b");
int c = 1;
// Constraint
model.addEquality(a, a * c); // Cannot apply * with IntVar and int
model.addEquality(a, a + b); // Cannot Apply + with IntVars
// What I want to achieve
model.addEquality(a, a * c + b);
我已经习惯了Python,在Python中,这些类型问题实际上并不存在,这里有一个简单的模型。Add(a==a*c+b)
完成了任务
另外,工具linearxpr.sum或linearxpr.term对我没有任何帮助
是否有人在Java中处理过CP Sat优化问题并知道解决方法?Java中没有运算符重载。
因此,您只能使用linearxpr方法。据我所知,我也只能使用linearxpr,因为我无法将linearxpr对象强制转换为IntVar。使用
d=linearxpr.term(a,c)
我做乘法部分,最后得到一个linearxpr对象,我不能在linearxpr.sum(d,b)
bc中使用它,它只需要IntVar对象。所以linearxpr.scaulrod(新的IntVar[]{a,b},新的int[]{c,1})。笨重,但这是java。我不想支持嵌套表达式,就是这样。非常感谢:)