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 的可执行二进制文件。