#java #multidimensional-array #cplex
#java #многомерный массив #cplex
Вопрос:
Я получаю следующее исключение при попытке напечатать следующий код. Кто-нибудь может посоветовать, что произошло?
for (int i = 0; i < numberOfNodes; i ) {
for (int j = 0; j < numberOfNodes; j ) {
for (int t = 0; t < noOfTimePeriods; t ) {
for (int k = 0; k < numberOfNodes; k ) {
for (int l = 0; l < numberOfNodes; l ) {
for (int t1 = 0; t1 < noOfTimePeriods; t1 ) {
if (cplex.getValue(x[i][j][t][k][l][t1]) != 0)
System.out.println("x[" i "][" j "][" t "][" k "][" l "][" t1 "] : "
cplex.getValue(x[i][j][t][k][l][t1]));
}
}
}
}
}
}
Исключение:
ilog.cplex.IloCplex$UnknownObjectException: CPLEX Error: object is unknown to IloCplex
at ilog.cplex.IloCplex.getValue(IloCplex.java:7594)
at SCHL.t16Model(SCHL.java:358)
at SCHL.executeModel(SCHL.java:23)
at Main.main(Main.java:12)
Ответ №1:
Я предлагаю взглянуть на пример facility.java CPLEX_Studio1210cplexexamplessrcjava
в.
И там вы увидите:
// Create variables. We have variables
// open[j] if location j is open.
// supply[i][j]] how much client i is supplied from location j
IloNumVar[] open = cplex.boolVarArray(nbLocations);
IloNumVar[][] supply = new IloNumVar[nbClients][];
for (int i = 0; i < nbClients; i )
supply[i] = cplex.numVarArray(nbLocations, 0.0, 1.0);
или с 4 измерениями:
IloCplex mycplex = new IloCplex();
int Ncd = 2;
int Nbv = 6;
int T = 4;
IloNumVar[][][][] y = new IloIntVar[Ncd][][][];
for (int i = 0; i < y.length; i ) {
y[i] = new IloIntVar[Ncd][][];
for (int j = 0; j < y[i].length; j ) {
y[i][j] = new IloIntVar[Nbv 1][];
for (int k = 1; k < y[i][j].length; k ) {
y[i][j][k] = mycplex.boolVarArray(T 1);
for (int t = 1; t < T; t ) {
IloRange myConstraint2 = mycplex.addEq(y[i][j][k][t], 1);
mycplex.add(myConstraint2);
}
}
}
}
mycplex.solve();
for (int i = 0; i < Ncd; i ) {
for (int j = 0; j < Ncd; j ) {
for (int k = 1; k < Nbv; k ) {
for (int t = 1; t < T; t )
System.out.printf("valeur = " mycplex.getValue(y[i][j][k][t]));
}
}
}