我无法在 OPL 脚本中达到数组以前的迭代值



我在CPlex中有一个MIP模型。

  • 在每次迭代中,我使用不同的。dat文件来解决问题。

  • 我将决策变量解值保存在多维数组中,如" array [iteration][I]", " I "是决策变量的索引和迭代表示不同的实例(不同的.dat文件)。

  • 我想到达"Array[1][I]"当"iteration = 2"时,它会显示"Array[1][i]= [a IloNumVar]"

    main{
    for(var datFile in thisOplModel.datFiles) {
    iteration+=1;
    var opl = new IloOplModel(def,cplex);       
    var data= new IloOplDataSource(datFile);
    opl.addDataSource(data);
    opl.generate(); 
    tempX[iteration]= new Array();
    tempY[iteration]= new Array();
    for(var i =1; i_node<=node; i ++){
    tempX[iteration][i]= new Array();
    tempY[iteration][i]= new Array();
    if (iteration==1){      
    cplex.solve()
    tempX[iteration][i]= opl.X[i];  
    //When I want to print temp[1][i] values at iteration is equal to 1, it print the values.
    writeln("tempX: ", tempX[1][i]); 
    }
    }       
    if (iteration==2){
    for(var i_node=1; i_node<=node; i_node++){  
    //When I am at iteration 2, i want to reach previous iteration values but it brings "[a IloNumVar]"  
    writeln("tempX: ", tempX[1][i]);
    }
    }   
    opl.end();
    } 
    

    }

代替

tempX[iteration][i]= opl.X[i];

I would try

tempX[iteration][i]= opl.X[i].solutionValue; 

最新更新