Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
倍增/添加Google或Tools IntVar';Java中的s和常量_Java_Optimization_Or Tools_Cp Sat Solver - Fatal编程技术网

倍增/添加Google或Tools IntVar';Java中的s和常量

倍增/添加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

目前,我开始在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
    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。我不想支持嵌套表达式,就是这样。非常感谢:)