Проблемы с функцией getValue (s) cplex Переполнение стека

каждый!

У меня проблемы с получением значений переменных х после решения модели.

x переменные — это четыре индексные переменные.

Я определяю структуры:

#define     ILOARRAYNUM2                   IloArray<IloNumArray>
#define     ILOARRAYNUM3                   IloArray<ILOARRAYNUM2 >
#define     ILOARRAYNUM4                   IloArray<ILOARRAYNUM3 >
typedef IloArray<IloNumVarArray> NumVar2Array;
typedef IloArray<NumVar2Array>   NumVar3Array;
typedef IloArray<NumVar3Array>   NumVar4Array;

Переменные x определены как:

NumVar4Array x;
ILOARRAYNUM4 _x;

mono.x = NumVar4Array(env, n);
for(int i = 0; i < n; i++) {
mono.x[i] = NumVar3Array(env, n);
for(int j = 0; j < n; j++) {
mono.x[i][j] = NumVar2Array(env, n);
for (int k = 0; k < n; k++) {
mono.x[i][j][k] = IloNumVarArray(env, n, 0.0, 1.0, ILOFLOAT);
}
}
}

mono._x = ILOARRAYNUM4(env,n);
for (int i = 0; i < n; i++){
mono._x[i]    = ILOARRAYNUM3(env,n);
for (int j = 0; j < n; j++){
mono._x[i][j]  = ILOARRAYNUM2(env,n);
for (int k = 0; k < n; k++) {
mono._x[i][j][k] = IloNumArray(env,n);
}
}
}

Чтобы получить значения х, я делаю:

for (int i = 0; i < n; i++) {
for (int j  = 0; j < n; j++) {
if (w[i][j] != 0){
for (int k = 0; k < n; k++) {
for (int m = 0; m < n; m++) {
if ( (k != m && k != j && m != i) or (k == m) ) {
mono.cplex.getValue(mono.x[i][j][k][m], mono._x[i][j][k][m]);
}
}
}
}
}
}

Но затем появляется сообщение об ошибке ниже:

Упомянутый IloExtractable не был извлечен IloAlgorithm

Что я делаю неправильно?

0

Решение

Скорее всего, ваши ограничения в вашей задаче не включают в себя все переменные; может быть некоторая переменная, которая не участвует ни в одном ограничении. Ваш код получает значения для некоторых переменных? Вы пытались отладить этот код, чтобы увидеть, какая переменная не извлекается в CPLEX?

Увидеть CPLEX — ошибка доступа к решению C ++

1

Другие решения

Других решений пока нет …