我在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