Pyomo требует времени после вызова решателя IPOPT?

При вызове решателя ipopt после построения конкретной модели QP Pyomo запускает внутренний код перед вызовом решателя. Читая другие вопросы по этой теме, я понимаю, что Pyomo конвертирует модель в формат, понятный ipopt. Но, к сожалению, Pyomo занимает много времени, прежде чем ipopt начинает решать модель. Есть ли способ сократить время реального вызова решателя?


person Mukesh    schedule 25.08.2017    source источник


Ответы (1)


Я считаю, что поведение Pyomo по умолчанию заключается в записи файла *.nl, а затем в вызове IPOPT для обработки этого файла и создания файла *.sol. Затем Pyomo выполняет синтаксический анализ файла *.sol. Файловый ввод-вывод для создания файла *.nl может быть ограничивающим фактором для больших моделей. Решением было бы использовать интерфейс в памяти, а не писать файл *.nl, который, как я считаю, находится в стадии разработки.

Также возможно, что у вас есть возможности для повышения эффективности при построении моделей. Вы можете проверить это, посмотрев, сколько времени нужно, чтобы достичь оператора solve() по сравнению с выполнением самого solve().

person Qi Chen    schedule 25.08.2017
comment
Спасибо, что ответили на это. Модель, над которой я работаю, большая. Я уже оптимизировал часть построения модели, и на построение модели уходит пара минут. После достижения оператора решения Pyomo работает в фоновом режиме и большую часть времени занимает до вызова ipopt. Что вы имеете в виду под интерфейсом в памяти для записи файла .nl? - person Mukesh; 26.08.2017
comment
Возможно передать информацию о модели в IPOPT без записи файла на диск (медленная часть), пройдя через CasADi. Это то, что обсуждали основные разработчики. Я не уверен, что это было движение. Если вам нужен конкретный ответ, вы можете открыть вопрос на странице Pyomo Github. - person Qi Chen; 26.08.2017
comment
Спасибо Ци. Я буду следить за этой темой на Github. - person Mukesh; 26.08.2017