繁体   English   中英

如何在 Linux 上将 ipopt 优化器与 pyomo 一起使用

[英]how to use the ipopt optimizer with pyomo on linux

我已经按照 ipopt coinor 网站说明安装了 ipopt 优化器。 这在构建目录中产生了一些静态目标文件,但它没有产生任何 bin 文件夹。

现在,当试图让 pyomo 使用 ipopt 时,我见过的唯一方法是指定可执行位置,例如opt = SolverFactory('ipopt', executable='executable path here')但我可以不知道那可能是什么。

我还注意到 coin-or 在他们的网站上有一些预编译的二进制文件。 这些在 bin 文件夹中包含一个 ipopt 可执行文件,但链接将使系统抱怨缺少名为libsvml.so静态对象。

ipopt 安装指南没有提到 libsvm,所以这让我很困惑。

我是否错过了制作/安装步骤中的某些内容? 任何帮助将不胜感激

这个问题与上一个问题非常相似。 请看这里的答案。

根据我的经验,如果您按照说明从源代码安装 ipopt 并且最终没有得到带有 ipopt 可执行文件的 bin 目录,那么您要么错过了一个步骤,要么由于缺少依赖项或第三方代码导致配置/安装失败. 您应该从头开始重新安装。

如果您更喜欢使用二进制文件,请确保为您的系统 Linux-32 位或 Linux-64 位下载正确的二进制文件,并确保包含可执行文件的 bin 文件夹位于您的搜索路径中。 使用二进制文件检查的另一件事是可执行文件具有可执行权限。 您可以使用 Linux 命令chmod +x来修改权限。 您应该能够在命令行上键入ipopt并获得另一个答案中注明的输出。

ipopt 确实是一个库,这可能会令人困惑,因为它有时分布在一个也称为 ipopt 的可执行二进制文件中。

debian repos 中只包含库,没有可执行文件。

这个库可以从应用程序代码链接到。 要用作“独立”求解器,它需要一个接口。 通常,ASL(AMPL 求解器库)接口。 ASL 接口允许 ipopt 从.nl文件读取输入数据并在.sol文件中写入输出数据。

“从源代码编译”部分中的ipopt 文档提到了这一点,并说明了如何从 AMPL 安装 ASL 代码。 GitHub 上有一个替代的 ASL 库: AMPL/MP 我不清楚这是否是相同的代码。 恕我直言,至少这里的许可证更清晰。

一些将 ipopt 作为具有 ASL 功能的二进制文件分发,静态或动态链接。

例如,COIN-OR 分发 ipopt 源,但停止分发二进制文件。 最新的 linux 二进制文件适用于 ipopt 3.7.1 ( https://www.coin-or.org/download/binary/Ipopt/ )。

AMPL在他们的网站上分发一个二进制文件其中 ASL 是静态链接的。 没有提到许可证或版本,也没有版本历史,所以我不会使用它。

conda-forge 频道中也有一个 ipopt conda,其中也有一个 ipopt bin。 它依赖于另一个使用上述 AMPL/MP ASL 实现的 conda 包。 这是我目前最好的选择。

编辑: ipopt 文档下载部分现在宣传了一个新的二进制文件源: JuliaOpt GH repo

编辑:COIN-OR 现在提供了一个构建和安装脚本 ( coinbrew ),它使编译 Ipopt 和依赖项以生成具有 AMPL 支持的可执行二进制文件变得更加容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM