我在Java中使用Cplex,并且设置了一个约束。使用赋值运算符设置cplex java约束“+ =”
我有一个矩阵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);
}
对于代码的Java的第4行显示了这个错误:“运营商+ =未定义的参数类型(s)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)
任何人能告诉我什么是错我的代码?
在此先感谢。
运算符重载在java中不被支持,你不能只取得C++代码,并期望它在java中工作。你可能应该阅读一个java教程,而不是在黑暗中徘徊,这也将清除有关空指针异常的混淆。 – Voo
请记住,'null'与'0'不同,因为它可能在某些语言中。 'null'是完全不同的东西。 –
感谢您的回答。像“+ =”这样的操作在java中工作,所以我期望在看到C++代码时它也可以用于java/cpley。 – Hendrik