在 Java 中乘以/添加 Google OR 工具 IntVar 和常量

问题描述

我目前开始使用 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 方法困住了。