#openmdao
#openmdao
Вопрос:
У меня смешанная нелинейная задача целого числа. Я не хочу использовать какие-либо штрафные подходы, поэтому я ищу решатель MINLP в Openmdao. Возможно ли использовать решатель APOPT в openmdao? Он недоступен в драйвере pyoptsparse. Есть ли какая-либо другая альтернатива? Если нет, то как мне реализовать APOPT в openmdao?
Ответ №1:
Первый шаг к тому, чтобы сделать любой оптимизатор доступным для OpenMDAO, — это сделать его доступным в самом Python. Похоже, что APOPT доступен в Python через библиотеку GEKKO. Итак, шаг 1 заключается в том, чтобы вы получили эту библиотеку и выяснили, как ее использовать.
Затем вы можете написать драйвер, который интегрирует GEKKO в OpenMDAO. Для этого вы напишете свой собственный плагин, который оборачивает GEKKO. Вы можете выполнить поиск в разделе openmdao github, чтобы просмотреть список существующих плагинов для некоторых примеров (вы можете создавать плагины для чего угодно, а не только для драйверов)
Одним из примеров плагина драйвера является оболочка OpenMDAO для библиотеки NLopt, написанная Национальной лабораторией возобновляемых источников энергии. https://github.com/johnjasa/nrel_openmdao_extensions/blob/master/nrel_openmdao_extensions/nlopt_driver.py
Фактический код драйвера находится здесь, но для его регистрации в качестве плагина необходимо полное репозиторий.
Вы также можете изучить алгоритм MINLP AMIEGO, который также доступен в виде плагина. Вы можете прочитать об этом подробно в этой статье .