Ошибка сегментации (дамп ядра) Ошибка при попытке изменить модель, которая решается с помощью обратного вызова с отложенным ограничением - PullRequest
0 голосов
/ 11 мая 2018

Я использую CPLEX Consert Technology с C ++ API. Я пытаюсь изменить модель после того, как решил ее с помощью обратного вызова с отложенным ограничением. Точнее, сначала я решаю модель с помощью обратного вызова с отложенным ограничением, затем добавляю дополнительные ограничения к модели, а затем снова пытаюсь решить новую модель с помощью того же обратного вызова с отложенным ограничением. Вот код:

model.add ( Some_Constraints ) ;                    
cplex.extract(model) ;  
cplex.use( MyLazyCallback (env) );
if ( cplex.solve() )
{
    cout << endl << endl << cplex.getObjValue () << endl << endl ;      
}
else
{
    cout << endl << endl << cplex.getCplexStatus() << endl << endl ;                
}
model.add (More_Constraints) ;
cplex.extract(model) ;  
cplex.use( MyLazyCallback (env) ); // Not sure if we need this command again
if ( cplex.solve() )
{
    cout << endl << endl << cplex.getObjValue () << endl << endl ;      
}
else
{
    cout << endl << endl << cplex.getCplexStatus() << endl << endl ;                
}

Исходная модель решена без ошибок, но новая модель не решена из-за ошибки Segmentation fault (core dumped). Ошибка происходит от второй команды cplex.extract(model) ;. Не могли бы вы подсказать мне, почему возникает эта ошибка и как ее исправить?

РЕДАКТИРОВАТЬ:

Из комментариев я понял, что с MoreConstraints что-то не так. Я создаю MoreConstraints в цикле, и содержимое цикла выглядит следующим образом:

IloRange RConstraint = SomeThing >= SomeValue ;
string RConstName = "RC" + to_string (Constraint_ID) ;
RConstraint.setName(RConstName.c_str()) ;

cout << "\n\n\nRconstraint " << RConstraint << endl ;       
MoreConstraints.add(RConstraint) ;
cout << "\n\n\nMoreConstraints " << MoreConstraints << endl ;

Вот результат вышеупомянутого:

enter image description here

На каждой итерации предполагается добавление нового ограничения к MoreConstraints, но это не так.

...