Как использовать IloExprArray в коде?

Я только начал использовать cplex библиотека и застрять в определении IloExprArray в моем коде. Вот мой фрагмент кода:

IloExprArray diff;
diff= IloExprArray(iloEnv,list.size());
for( int i=1; i<=10; i++ ) {
for( int j=0; j<9; j++ ) {
double weight = globalObjects->value.at(j)->getmyproperty(i);

diff[j] += ( Ycfg[i][j]*Ycfg[i][j] - 2*weight*Ycfg[i][j] + weight*weight );
//where Ycfg is IloArray<IloNumVarArray>

}
}

Но всякий раз, когда я запускаю этот код, он застревает на diff[j] += .. линия. Я также искал в сети, но не получил хорошую документацию, кроме официальной. Другой вопрос А что, если я использую IloArray <IloExpr> вместо IloExprArray ?

1

Решение

Ваш код инициализации

diff = IloExprArray(iloEnv, list.size())

создает массив пустых ручки. Ручки, по сути, ILOG умные указатели. Когда вы делаете + = для пустого дескриптора, вы, по сути, делаете это для нулевого указателя. Вам нужно инициализировать все ручки.

for (int i = 0; i < list.size(); ++i)
diff[i] = IloExpr(iloEnv);

Существуют и другие подозрительные части вашего кода, которые могут вызывать у вас проблемы. Например, внешний цикл for работает от 1 до 10, и вы используете list.size () в качестве длины diff, но ваш for (j = 0; j< 9; ++j) вместо for (j = 0; j < list.size(); ++j)

2

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

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

По вопросам рекламы [email protected]