Using APOPT (MINLP) solver in Openmdao

124 views Asked by At

I have a mixed integer nonlinear problem. I dont want to use any penalty approaches so I am looking for a MINLP solver in Openmdao. Is it possible to use APOPT solver in openmdao ? It isn't available in pyoptsparse driver. Is there any other alternative ? If not how should I go about implementing APOPT in openmdao ?

1

There are 1 answers

0
Justin Gray On BEST ANSWER

The first step in making any optimizer available to OpenMDAO is to make it accessible in Python itself. It looks like APOPT is available in Python through the GEKKO library. So Step 1 is for you to get that library, and figure out how to use it.

Then you can write a driver that integrates GEKKO in OpenMDAO. To do that you will write your own plugin that wraps GEKKO. You can search for the openmdao github topic to see a list of existing plugins for some examples (you can make plugins for anything, not just drivers)

One example driver plugin for is the OpenMDAO wrapper for the NLopt library, written by the National Renewable Energy Laboratory. https://github.com/johnjasa/nrel_openmdao_extensions/blob/master/nrel_openmdao_extensions/nlopt_driver.py

The actual driver code is here, but the full repo is necessary to actually register it as a plugin.

You can also look into the MINLP algorithm AMIEGO, which is also available as a plugin. You can read about it in detail in this paper.