在 python 中将 IPOPT 与 Openmdao(或 pyoptsparse)结合使用

Using IPOPT with Openmdao (or pyoptsparse) in python

大家好。我有一个小问题:我正在使用 openmdao 和 pyOptSparseDriver。它适用于某些求解器(例如 SLSQP、PSQP),因此安装没有问题。

现在我想尝试对 IPOPT 进行同样的操作,但是 pyoptsparse 没有给出代码。我按照 COIN-OR 文档安装了 IPOPT (http://www.coin-or.org/Ipopt/documentation/node10.html),一切正常(我不知道如何检查)。现在我的桌子上有一个 COIN-OR 文件夹,我不知道如何让 pyoptsparse 从中获取 IPOPT(它是 "from . import pyoptcore" 行崩溃),来自 pyIPOPT/pyIPOPT.py。 谁能帮我 ? 提前致谢

您必须将ipopt 源代码放入src folder of pyopt-sparse,然后重新编译包。

我们通过 pytoptsparse 包将 IPOPT 与 OpenMDAO 结合使用,并将其安装为独立库,就像您所做的那样。要使其正常工作,您需要将 IPOPT_DIR 环境变量设置为指向您在 运行 安装 pyoptsparse 之前安装 IPOPT 的位置。

所以假设你安装了 IPOPT,例如/usr/local/IPOPT:

$ export IPOPT_DIR=/usr/local/IPOPT
$ cd /path/to/pyoptsparse/
$ python setup.py install

这个 应该 导致 pyoptsparse 编译 IPOPT 的 python 包装器并生成将放置在 Python 中的文件 pyoptcore.so' s site-packages/pyoptsparse/pyIPOPT.

在我们的集群上,我们不得不稍微修改 pyoptsparse/pyIPOPT/setup.py 文件,因为我们使用 Intel 编译所有内容,但如果您使用 gfortran 编译,那么官方版本的 pyoptsparse 应该适合您。

或者,您可以按照 Justin 的建议进行操作,这基本上就是您在 pyoptsparse 文档中找到的说明。