Использование решателя APOPT (MINLP) в Openmdao

#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, который также доступен в виде плагина. Вы можете прочитать об этом подробно в этой статье .