J'obtiens l'exception suivante en essayant d'imprimer le code suivant. Quelqu'un peut-il conseiller ce qui s'est passé?

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]));
                                }
                            }
                        }
                    }
                }
            }

Exception:

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
Khaled Shah 9 oct. 2020 à 02:29

1 réponse

Meilleure réponse

Je suggère de jeter un œil à l'exemple facility.java dans CPLEX_Studio1210\cplex\examples\src\java.

Et là vous verrez :

// 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); 

Ou avec 4 dimensions :

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]));
                      }
                   }
                } 
0
halfer 10 oct. 2020 à 21:39