2016-07-26 37 views
0

我想在java中使用cplex定義二元決策變量。這是一個二維變量。這意味着如果一條路徑從一個特定的站點開始,它應該是1或者0。我有一組站點J和一組路徑K,我的決策變量是Z_jk。目前我正在定義如下的代碼,但它不起作用。有誰能幫我嗎?在java中使用cplex定義二元決策變量

在此先感謝。

// define variables 
       z = new IloNumVar[stations_start.size()][]; 
       for (int j=0; j<stations_start.size();j++) { 
        z[j] = cplex.numVarArray(paths.size(),0,1); 
        for (int k=0;k<paths.size();k++) { 
         z[j][k] = cplex.numVar(new_column, 0, 1,"z"); 
         z[j][k].setName("z."+j+"."+k); 
        } 
       } 

回答

0

您正在嘗試創建二元決策變量的二維數組。你得到什麼錯誤?

嘗試查看CPLEX提供的一些示例代碼。請參閱transport.java,其中包含一些變量聲明和初始化的2D陣列,如下所示:

IloNumVar[][] x = new IloNumVar[nbSupply][]; 
    IloNumVar[][] y = new IloNumVar[nbSupply][]; 

    for (int i = 0; i < nbSupply; i++) { 
     x[i] = cplex.numVarArray(nbDemand, 0., Double.MAX_VALUE); 
     y[i] = cplex.numVarArray(nbDemand, 0., Double.MAX_VALUE); 
    }