Вывести двумерный массив переменных в cplex - PullRequest
0 голосов
/ 23 апреля 2020

В настоящее время я пытаюсь вывести двумерный массив переменных в CPLEX. Массив определяется следующим образом:

IloNumVar[][] y = new IloNumVar[numJobs][]; 
for(int j=0; j<numJobs; j++){
    y[j]= cplex.numVarArray(numJobs,0, 1, IloNumVarType.Int);//ILP
}

После решения ILP эти переменные должны быть напечатаны. Я попытался напечатать их следующим образом:

for (int i = 0; i < numJobs; i++) {
    for(int j=0; j < y[i].length; j++){
        System.out.println(cplex.getValues(y[i][j])+ ", ");
    }
}

В качестве ошибки я получаю «Ошибка CPLEX: объект неизвестен IloCplex»

Если я установил j = 1, то только значения для i = 0 напечатаны ..

У кого-нибудь есть идеи, как решить эту проблему?

Заранее большое спасибо!

1 Ответ

0 голосов
/ 23 апреля 2020

Ошибка CPLEX: объект неизвестен IloCplex

Эта ошибка обычно появляется, когда вы не добавили объект в модель (т. Е. Этот конкретный IloNumVar не отображается в никаких ограничений, ни цель). Возможно, вы захотите экспортировать вашу модель в формат LP с помощью метода exportModel , чтобы проверить, правильно ли она сформулирована (то есть, как вы ожидаете).

Возможным обходным решением будет явное добавление все переменные модели перед вызовом solve(). Например:

for (IloNumVar[] v : y)
    cplex.add(v);

При этом вы сможете запросить все IloNumVar в y, и ошибка больше не должна возникать.

...