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