我在 Java 中使用 Cplex,并且我有一个设置约束的问题。
我有一个矩阵 x[n][n],其中 x 可以是 0 或 1。对于每个 i(1..n),所有 j(1..n) 的总和 = 1
关于这篇文章中的答案:Cplex c++ multidimensional decision variable,我这样设置我的代码:
for (int i=0; i<n; i++){
IloNumExpr sum_over_i;
for(int j=0; j<n; j++){
sum_over_i += x[i][j];
}
cplex.addEq(sum_over_i, 1.0);
}
对于代码的第 4 行,java 显示此错误:“运算符 += 未定义参数类型 IloNumExpr、IloNumVar”
像“+=”这样的赋值运算符是否可能适用于 cplex c++ 但不适用于 cplex java?
作为替代方案,我尝试了这个:
for(int i=0; i<n; i++){
IloNumExpr sum_over_i = null;
for(int j=0; j<n; j++){
cplex.eq(sum_over_i, cplex.sum(sum_over_i, x[i][j]));
}
cplex.addEq(sum_over_i, 1.0);
}
在这种情况下,Eclipse 在运行时会出现以下错误提示:
Exception in thread "main" java.lang.NullPointerException
at ilog.cplex.CpxQextractor.visitLinkedExpr(CpxQextractor.java:73)
at ilog.cplex.CpxLinkedExpr.accept(CpxLinkedExpr.java:46)
at ilog.cplex.CpxRange.<init>(CpxRange.java:1337)
at ilog.cplex.IloCplexModeler.makeRange(IloCplexModeler.java:4316)
at ilog.cplex.IloCplexModeler.eq(IloCplexModeler.java:4902)
at TSP.main(TSP.java:57)
谁能告诉我我的代码有什么问题?
提前致谢。