Я так понимаю, вы используете Concert C ++. Обработка Ctrl- C (или прерывание) не входит в сферу применения CPLEX.
Но есть класс IloCplex :: Aborter . Вы можете установить обработчик для Ctrl- C (см., Например, здесь ). Затем также установите прерыватель с классом IloCplex
и из обработчика прервите этот прерыватель.
Конечно, если ваш сигнал прерывания поступает из другого источника, вы можете использовать одну и ту же стратегию: зарегистрироваться и отменить и вызвать его функция abort()
для прерывания CPLEX.
После того, как CPLEX был прерван, лучшее решение, найденное до сих пор, можно запросить, используя getValues()
и getObjectiveValue()
. Эти функции всегда запрашивают лучшее из возможных решений, найденных до сих пор, независимо от того, было ли оно доказано оптимальным или нет.