问题描述
我目前开始使用 Java 中的 Google OR 工具 CP-Sat 求解器,并面临使用简单数学方程(包括常量和 OR-Tools 内部“Intvar”)的问题。
我的问题的一个小例子:
// Variables
Intvar a = model.newIntvar(0,5,"a");
Intvar b = model.newIntvar(0,"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,其中这些类型 - 问题并不真正存在,有一个简单的 model.Add(a == a * c + b)
完成了工作。
Also Or-Tools LinearExpr.sum 或 LinearExpr.term 根本没有帮助我。
有没有人用 Java 处理过 CP-Sat 优化问题并知道解决方法?
解决方法
java 中没有运算符重载。 所以你被 LinearExpr 方法困住了。