Решающие переменные CPLEX с массивом [i] в качестве значений
Я пытаюсь создать набор переменных решения, который не использует целочисленные значения из цикла for-Loop, а вместо этого получает значение из массива.
Причина в том, что я хочу, чтобы индексы были такими же, как числа в массивах. Нумерация массива может выглядеть так:
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]);
}
}
}
Я ценю любую помощь. Спасибо вам, ребята!
1 ответ
Решение
Вы объявляете массив как:
int [] Array = {12,11,10,15,16,17};
а затем итерации в:
for (int i=0; i< inputData.Array().length;i++){
это означает, что значения я {0,1,2,3,4,5}
и х определяется как IloNumVar[6][6][6]
когда вы делаете:
this.x[inputData.Array()[i]]
есть и ошибка, потому что у вас нет индексов {12,11,10,15,16,17}
в переменной х.