Python 如何在linux上与pyomo一起使用ipopt优化器

Python 如何在linux上与pyomo一起使用ipopt优化器,python,ubuntu,pyomo,ipopt,Python,Ubuntu,Pyomo,Ipopt,我已经按照ipopt coinor网站的说明安装了ipopt优化器。这在build dir中生成了一些静态对象文件,但没有生成任何bin文件夹 现在,当试图让pyomo使用ipopt时,我看到的唯一方法就是指定可执行文件的位置,如下所示 opt=SolverFactory('ipopt',executable='executable path here') 但我不知道那可能是什么 我还注意到coin或在他们的网站上有一些预编译的二进制文件。这些文件在bin文件夹中包含一个ipopt可执行文件

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

现在,当试图让pyomo使用ipopt时,我看到的唯一方法就是指定可执行文件的位置,如下所示

opt=SolverFactory('ipopt',executable='executable path here')
但我不知道那可能是什么

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

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

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

此问题与前面的问题非常相似。请看答案

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


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

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

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


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

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

只包含库,没有可执行文件

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

“从源代码处编译”一节中提到了这一点,并说明了如何从AMPL安装ASL代码。GitHub上有另一个ASL库:。我不清楚这是否是相同的代码。至少这里的许可证更清晰

有些将ipopt作为具有ASL特性的二进制文件分发,可以静态链接,也可以动态链接

例如,COIN-OR对ipopt源进行了分发,但停止了二进制文件的分发。最新的linux二进制文件适用于IPOPT3.7.1()

AMPL分配一个ASL静态链接的二进制文件。没有提到许可证或版本,也没有版本历史记录,所以我不会使用它

conda forge通道中有一个ipopt,还有一个ipopt箱。它取决于使用上述AMPL/MP ASL实现的另一个conda包。这是我现在最好的选择

编辑:现在播发二进制文件的新源:


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

Ipopt确实是一个库,它有时分布在一个可执行二进制文件(也称为Ipopt)中,这可能会让人困惑

只包含库,没有可执行文件

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

“从源代码处编译”一节中提到了这一点,并说明了如何从AMPL安装ASL代码。GitHub上有另一个ASL库:。我不清楚这是否是相同的代码。至少这里的许可证更清晰

有些将ipopt作为具有ASL特性的二进制文件分发,可以静态链接,也可以动态链接

例如,COIN-OR对ipopt源进行了分发,但停止了二进制文件的分发。最新的linux二进制文件适用于IPOPT3.7.1()

AMPL分配一个ASL静态链接的二进制文件。没有提到许可证或版本,也没有版本历史记录,所以我不会使用它

conda forge通道中有一个ipopt,还有一个ipopt箱。它取决于使用上述AMPL/MP ASL实现的另一个conda包。这是我现在最好的选择

编辑:现在播发二进制文件的新源:


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

还有其他方法使用这个脚本吗