Использование IPOPT с Openmdao (или pyoptsparse) в Python
Здравствуйте все. У меня есть небольшая проблема: я работаю с openmdao и pyOptSparseDriver. Он работает для некоторых решателей (например, SLSQP, PSQP), поэтому проблем с этой установкой нет.
Теперь я хотел бы попробовать то же самое с IPOPT, но код не предоставляется с pyoptsparse. Я следовал документации COIN-OR для установки IPOPT ( http://www.coin-or.org/Ipopt/documentation/node10.html), и все ОЧЕНЬ хорошо (я не знаю, как это проверить). Теперь у меня на столе есть папка COIN-OR, и я не знаю, как заставить pyoptsparse извлекать IPOPT из нее (это строка "from. Import pyoptcore", которая вылетает) из pyIPOPT/pyIPOPT.py. Может кто-нибудь мне помочь? Заранее спасибо
2 ответа
Мы используем IPOPT с OpenMDAO через пакет pytoptsparse и устанавливаем его как отдельную библиотеку, как вы сделали. Чтобы заставить это работать, вам нужно установить IPOPT_DIR
Переменная окружения, указывающая на место, где вы установили IPOPT перед запуском установки pyoptsparse.
Предполагая, что вы установили IPOPT, например, в /usr/local/IPOPT:
$ export IPOPT_DIR=/usr/local/IPOPT
$ cd /path/to/pyoptsparse/
$ python setup.py install
это должно привести к pyoptsparse компиляции оболочки Python для IPOPT и создать файл pyoptcore.so, который будет помещен в Python site-packages/pyoptsparse/pyIPOPT
,
На нашем кластере мы должны были изменить pyoptsparse/pyIPOPT/setup.py
немного, так как мы компилировали все с Intel, но если вы компилируете с gfortran, официальная версия pyoptsparse должна работать для вас.
В качестве альтернативы, вы можете делать то, что предлагает Джастин, что по сути является инструкциями, которые вы найдете в документации по пиопцпарсу.
Вы должны поместить исходный код ipopt в папку src pyopt-sparse, а затем перекомпилировать пакет.