2016-05-11 10 views
0

fprintf()を使用してファイルにIloNumArrayを印刷しようとしています。問題は、配列の長さがわからないということです。これは、即時コールバック内でgetValues()メソッドで満たされているためです。即時コールバック(C++)内のファイルにIloNumArrayを印刷

私は問題を抱えているコールバックのコードは、次のいずれかです。助けを

ILOINCUMBENTCALLBACK3(MyFirstcallback, 
        IloCplex, cplex, 
        IloInt, contador, 
        IloNumVarArray, varenteras){ 
int i; 
int length=0; 
IloNum CurrentInc = MAX_COL; 
IloNum BestTime = 0; 
IloNum BestObj = MAX_COL; 
IloNumArray BestSol(varenteras.getEnv()); 

IloNum FirstTime = 0; 
IloNum FirstObj = MAX_COL; 
IloNumArray FirstSol(varenteras.getEnv()); 


if (hasIncumbent()) { 

    if (contador == 0 || contador == 1){ 
     contador+=1; 
     FirstObj=getIncumbentObjValue(); 
     getValues(FirstSol,varenteras); 
     FirstTime=cplex.getTime(); 


     length=sizeof(FirstSol)/sizeof(FirstSol[0]); 
//The first issue is here, length should be the size of the solution, and it's not giving it. 


     printf("El tiempo %lf el valor %lf el largo de la solucion %d \n",FirstTime,FirstObj,length);   
     FILE* out; 
     out = fopen("ResultadoPruebaTamanotest.txt","at+"); 
     fprintf(out,"%lf \t %lf \n",FirstTime,FirstObj); 
     for (i=0;i<length;i++){ 
      fprintf(out,"%d \t",FirstSol[i]); 
     } 
     fprintf(out,"\n"); 
    } 
} 

ありがとう!

答えて

0

IloNumArrayには、いくつの要素があるかを示すgetSize()メンバがあります。