1

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

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

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

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

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

4

2 回答 2

3

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

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

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

于 2017-09-20T18:05:47.200 回答
2

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

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

该库可以从应用程序代码链接到。要用作“独立”求解器,它需要一个接口。通常,ASL(AMPL Solver Library)接口。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 的可执行二进制文件。

于 2018-10-05T10:04:56.257 回答