2014-12-06 36 views
0

我尝试创建一组决策变量,它不使用for-Loop中的整数值,而是从数组中获取值。将数组[i]作为值的CPLEX决策变量值为

原因是我希望指数与数组中的数字相同。阵列的编号可能看起来像:

int [] Array = {12,11,10,15,16,17}; 

我得到一个arrayoutofboundsexception错误,当我运行它。

这里的部分代码:

x = new IloNumVar[inputData.Array().length][inputData.Array().length][inputData.Arraytwo().length]; 
    for (int i=0; i< inputData.Array().length;i++){ 
     this.x[inputData.Array()[i]]= new IloNumVar[inputData.Array().length][]; 
      for (int j=0; j< inputData.Array().length;j++){ 
      this.x[inputData.Array()[[i][j] = new IloNumVar[inputData.Arraytwo().length]; 
      for (int k=0; k<inputData.get_sub_K_set().length;k++){ 
       this.xx[inputData.Array()[i]][inputData.Array()[j]][inputData.Arraytwo()[k]]= this.boolVar("x:i_"+inputData.Array()[i]+"-j_"+inputData.Array()[j]+"-k_"+inputData.Arraytwo()[k]); 
      } 
     } 
    } 

我感谢所有帮助。 谢谢你们!

回答

0

您正在声明阵列为:

int [] Array = {12,11,10,15,16,17}; 

然后迭代中:

for (int i=0; i< inputData.Array().length;i++){ 

这意味着i的值是{0,1,2,3,4,5}

且x的定义如下IloNumVar[6][6][6]

当您这样做时:

this.x[inputData.Array()[i]] 

是错误的,因为您在x变量中没有索引{12,11,10,15,16,17}