问题标签 [ipopt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1697 浏览

python - 如何在 linux 上使用 ipopt 优化器和 pyomo

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

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

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

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

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

0 投票
0 回答
93 浏览

python - 使用 pyipopt 时 openmpi 出错

我从源代码安装了 ipopt 并按照所有步骤进行了测试,并且测试也成功了。但是在我从https://github.com/xuy/pyipopt安装 pyipopt并运行测试示例后,出现以下错误:

在这里发现了一个类似的错误,它用来--disable-dlopen使它工作,但是如何在 ipopt 编译过程中添加这个标签?

0 投票
1 回答
561 浏览

python - 如何禁止打印 Ipopt 的启动消息(横幅)?

我正在循环运行 Ipopt(从 Python > Cyipopt)。

有没有办法抑制 Ipopt 的以下启动消息?


该程序包含 Ipopt,一个用于大规模非线性优化的库。Ipopt 在 Eclipse 公共许可证 (EPL) 下作为开源代码发布。欲了解更多信息,请访问http://projects.coin-or.org/Ipopt


我已经print_level = 0将它设置为 Ipopt 选项并将其传递,但​​我仍然收到启动消息。

我也尝试使用 Python 作为选项传递nlp.addOption('sb','yes'),但收到以下错误消息: File "src/cyipopt.pyx", line 425, in cyipopt.problem.addOption TypeError: Invalid option type

(有关上述可能的解决方案,请参见链接:https ://groups.google.com/forum/#!topic/julia-opt/TVmuXFWfeBM。)

我在https://list.coin-or.org/pipermail/ipopt/2013-September/003510.html上找到了另一个可能的解决方案,但不明白在哪里以及如何实现它。

谢谢。

0 投票
1 回答
475 浏览

compilation - 使用 Cygwin 安装和使用 IPopt - 还是更好的选择?

我是优化领域的新手。不过,用 fmincon 做了一些项目,现在正在寻找可在 OpenSource 中使用的替代方案,最好以某种方式在 Python 中使用。因此,我找到了 IPopt。还有其他与 fmincon 一样好的建议吗?

我试图通过编译来安装 IPopt。我必须说,这似乎是一团糟。我尝试了所有版本,最终得到了手册中最有希望的“使用 MSVC++ 编译器安装 Cygwin”。因此我必须安装 CYGwin 并更改 make.exe。完毕。将 Visual Studio(在我的例子中为 Visual Studio 1)中的 cl.exe 添加到 Apth 环境中。完毕。在 cygwin.bat 中添加“call”call“C:\Program Files (x86)\Microsoft Visual Studio 14\VC\vcvarsall.bat”。完成。

现在有两件事。当我对下载的 IPopt 源执行“./configure”时,我得到:“configure: error: /bin/sh './configure' failed for Ipopt”

也像手册中建议的那样,调用“./configure -enable-doscompile=msvc”来告诉 cygwin 使用 windows 编译器给了我“configure: error: --enable-doscompile=mscv not supported”。

所以。基本上我无法安装 Ipopt。使用它似乎是不可能的,因为在我的 Win10 64 位上构建它的所有其他方法也失败了。手册似乎已过时,或者我没有找到正确的方法,希望你们中的一些人可以提供帮助。编译是相当新的东西,我很高兴学习。提前说。

0 投票
0 回答
407 浏览

c# - 在 C# 中使用 IPOPT 的不可重现的结果

我目前正在尝试使用IPOPTcsipopt在 C# 中实现优化问题。

我观察到,在同一个过程中一遍又一遍地使用相同的数据运行相同的问题会导致每次都产生不同的结果。其中,日志文件中的 cpu 时间不断增加,并且初始 IPOPT 标题仅打印在第一个日志文件中。但是,如果我停止并重新启动该过程,结果是可重现的(即迭代 0 每次都是相同的,迭代 1 也是如此,等等)。

第一次迭代日志:

第二次迭代日志:

我的猜测是在处理我的问题时没有释放某些资源,并且某些值保存在内存中的某个位置。这成为一个更大的问题,因为我的问题有时会收敛,有时不会与相同的数据。

我的问题构造如下:

然后我这样称呼它(来自控制台应用程序):

在旁注中(但可能相关?),相同的问题会在单元测试和控制台应用程序中收敛,但不会在 Windows 服务或 WebAPI 中收敛。

完整的、可运行的代码在存储库(VS2017) 中可用,展示了不可重现的结果。

任何提示或指导将不胜感激。我绝不是优化问题的专家,更不用说 IPOPT。

编辑IPOPT界面中 的Dispose方法如下:

这似乎可以释放问题本身,但不能解决问题。

0 投票
0 回答
125 浏览

python - 如何在 Ubuntu 16.04 中安装 Cyipopt

我正在尝试在 Ubuntu 16.04 中为 Python 2.7安装Cyipopt 。

我已经成功安装了 Ipopt、Cython 和 Lapack

但是,当我尝试使用 安装 Cyipoptpython setup.py install时,出现以下错误:

我一直在网上搜索,但没有得到任何点击。将不胜感激任何帮助。

0 投票
1 回答
846 浏览

ubuntu - 在 ubuntu 16.04 中编译 Ipopt 示例时出现“找不到 stddef.h”错误

我在 ubuntu 16.04 中安装了 Ipopt debian 包。当我尝试执行 Ipopt 文档中给出的示例问题时,我收到以下错误

/usr/include/coin/IpSmartPtr.hpp:18: error: #error "don't have header file for stddef"

我希望有些是一些依赖性问题。我该如何解决这个问题?

0 投票
0 回答
515 浏览

mathematical-optimization - 相同优化模型的不同结果,除了目标函数中的成本系数:Neos、Bonmin、Ipopt

我正在使用 neos bonmin 求解器来找到高度约束的混合整数非线性问题的全局最小解。以下是相同模型的结果,除了成本目标函数中的系数对于找到最佳解决方案的结果较小。

有人可以举例说明为什么会发生这种情况吗?

是否有任何 Ipopt 或 Bonmin 选项可以让求解器通过具有较高成本系数的模型的第一个不可行的解决方案?

我已经在这里完成了两个求解器选项

邦民期权

https://projects.coin-or.org/Bonmin/browser/stable/1.8/Bonmin/doc/BONMIN_UsersManual.pdf?format=raw

Ipopt 选项

https://www.coin-or.org/Ipopt/documentation/node40.html

在这个例子中,客观成本系数更高,我得到了一个最终不可行的解决方案

在这个结果中,客观成本系数较低,我得到了一个最佳解决方案

这是我的模型中的成本目标函数和成本约束。我无法分享我的整个模型,因为它有几千行。

这里以“DRipSet”开头的变量是二元决策

0 投票
0 回答
192 浏览

pip - 在 anaconda 环境中安装 sIpopt

我目前正在使用 anaconda 中的环境进行项目(我的操作系统是 Windows)。我当前的环境已经通过 anaconda 云安装了 IPOPT。现在,我正在尝试安装 sIPOPT(IPOPT 的工具箱,不要误认为 IPOPT 本身),可在以下网址找到:https ://www.coin-or.org/Ipopt/documentation/node33.html 。

我正在尝试在我目前用于我的项目的同一 anaconda 环境中安装 sIPOPT。通常,我会继续使用 conda 将软件包安装到我的环境中。但是,我找不到通过 conda 或 pip 安装 sIPOPT 的渠道。

sIPOPT的安装说明只给出了使用linux环境构建包的说明,我不太熟悉。我现在假设如果我安装了像 Cygwin 这样的类 unix 环境,我将能够将 sIPOPT 安装到我的 anaconda 环境中。

我的问题是:你们中有人做过类似的事情吗?是否可以通过 Cygwin 将 sIPOPT 安装到已安装 Ipopt 的现有 conda 环境中?

非常感谢!:)

0 投票
1 回答
607 浏览

eigen - 带有 Eigen 和 IPOPT 的矢量化标志

我有一些 C++ 函数正在使用 IPOPT 进行优化。虽然成本函数、约束函数等是用 C++ 编写的,但代码最初是使用 C 接口编写的。除非事实证明这是问题所在,否则我还没有费心去改变它。

无论如何......我们正在观察一些意想不到的行为,当我们编译带有/不带有矢量化标志的程序时,优化器会以不同的方式收敛。具体来说,在 CMakeLists 文件中,我们有

当我们使用这些设置运行优化器时,优化器会在大约 100 次迭代中收敛。到现在为止还挺好。

但是,我们有理由相信,当为 ARM(特别是 Android)编译时,不会发生矢量化,因为其性能与 Intel 处理器上的性能截然不同。Eigen 文档说应该始终为 64 位 ARM 启用 NEON 指令,但我们有理由怀疑这不会发生。无论如何,这不是这里的问题。

由于这种怀疑,我们想看看如果我们禁用矢量化,我们的英特尔处理器的性能会有多糟糕。这应该给我们一些关于向量化正在发生多少的迹象,以及我们可能期望在 ARM 中看到多少改进。但是,当我们将编译器标志更改为

(或者仅在我们只使用 AVX(没有 fma)的情况下),然后我们从优化器中得到相同的通用解决方案,但收敛性能非常不同。具体来说,在没有矢量化的情况下,优化器需要大约 500 次迭代才能收敛到解决方案。

总而言之:

我们实际上只是更改了 cmake 文件中的那一行,而不是源代码。

我想就为什么会发生这种情况提出一些建议。


我的想法和更多背景信息:

在我看来,无论是否带有矢量化的版本都必须进行一些舍入,这使得 IPOPT 收敛不同。我的印象是添加 AVX 和 FMA 标志不会改变函数的输出,而只会改变计算它们所需的时间。我好像错了。

我们观察到的现象对我来说特别奇怪,因为一方面我们观察到优化器总是收敛到相同的解决方案。这以某种方式表明问题不能太病态。然而,另一方面,优化器在有/没有矢量化标志的情况下表现不同的事实表明,该问题确实对矢量化指令生成的任何小残差敏感。

要记住的另一件事是我们将 IPOPT 预编译到一个库中,并且只是将我们的代码与该预编译库链接起来。所以我认为 AVX 和 FMA 标志不会影响优化器本身。这似乎意味着我们的函数必须输出具有明显不同值的值,具体取决于是否启用了矢量化。


对于那些感兴趣的人,这里是完整的 cmake 文件