在Openmdao中使用APOPTMINLP求解器

问题描述

我有一个混合整数非线性问题。我不想使用任何惩罚方法,所以我正在Openmdao寻找MINLP求解器。是否可以在openmdao中使用APOPT求解器?在pyoptsparse驱动程序中不可用。还有其他选择吗?如果不是,我该如何在openmdao中实现APOPT?

解决方法

使任何优化器可用于OpenMDAO的第一步是使其在Python本身中可访问。看来APOPT可通过GEKKO library在Python中使用。因此,第一步是让您获取该库,并弄清楚如何使用它。

然后,您可以编写一个将GEKKO集成到OpenMDAO中的驱动程序。为此,您将编写包裹GEKKO的plugin。您可以搜索openmdao github topic来查看一些示例的现有插件列表(您可以为任何东西制作插件,而不仅仅是驱动程序)

一个示例驱动程序插件是OpenMDAO wrapper for the NLopt library,由国家可再生能源实验室(National Renewable Energy Laboratory)编写。 https://github.com/johnjasa/nrel_openmdao_extensions/blob/master/nrel_openmdao_extensions/nlopt_driver.py

实际的驱动程序代码为here,但完整的repo是将其实际注册为插件所必需的。

您还可以查看MINLP算法AMIEGO,该算法也可以作为插件使用。您可以详细了解in this paper.

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...