在 Openmdao 中使用 APOPT (MINLP) 求解器
Using APOPT (MINLP) solver in Openmdao
我有一个混合整数非线性问题。我不想使用任何惩罚方法,所以我在 Openmdao 中寻找 MINLP 求解器。是否可以在 openmdao 中使用 APOPT 求解器?它在 pyoptsparse 驱动程序中不可用。还有其他选择吗?如果不是,我应该如何在 openmdao 中实施 APOPT?
使 OpenMDAO 可以使用任何优化器的第一步是使其在 Python 本身中可访问。看起来 APOPT 在 Python 到 GEKKO library 中可用。所以第 1 步是让您获取该库,并弄清楚如何使用它。
然后就可以在OpenMDAO中写一个集成GEKKO的驱动了。为此,您将编写自己的 plugin that wraps GEKKO. You can search for the openmdao github topic 以查看现有插件的列表以获取一些示例(您可以为任何东西制作插件,而不仅仅是驱动程序)
一个示例驱动程序插件是 OpenMDAO wrapper for the NLopt library,由国家可再生能源实验室编写。
https://github.com/johnjasa/nrel_openmdao_extensions/blob/master/nrel_openmdao_extensions/nlopt_driver.py
实际的驱动程序代码是 here,但是完整的 repo 是将其实际注册为插件所必需的。
你也可以看看MINLP算法AMIEGO, which is also available as a plugin. You can read about it in detail in this paper.
我有一个混合整数非线性问题。我不想使用任何惩罚方法,所以我在 Openmdao 中寻找 MINLP 求解器。是否可以在 openmdao 中使用 APOPT 求解器?它在 pyoptsparse 驱动程序中不可用。还有其他选择吗?如果不是,我应该如何在 openmdao 中实施 APOPT?
使 OpenMDAO 可以使用任何优化器的第一步是使其在 Python 本身中可访问。看起来 APOPT 在 Python 到 GEKKO library 中可用。所以第 1 步是让您获取该库,并弄清楚如何使用它。
然后就可以在OpenMDAO中写一个集成GEKKO的驱动了。为此,您将编写自己的 plugin that wraps GEKKO. You can search for the openmdao github topic 以查看现有插件的列表以获取一些示例(您可以为任何东西制作插件,而不仅仅是驱动程序)
一个示例驱动程序插件是 OpenMDAO wrapper for the NLopt library,由国家可再生能源实验室编写。 https://github.com/johnjasa/nrel_openmdao_extensions/blob/master/nrel_openmdao_extensions/nlopt_driver.py
实际的驱动程序代码是 here,但是完整的 repo 是将其实际注册为插件所必需的。
你也可以看看MINLP算法AMIEGO, which is also available as a plugin. You can read about it in detail in this paper.