Решающие переменные 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} в переменной х.

Другие вопросы по тегам