问题标签 [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.
c++ - 在回溯中使用“delete”解除分配时出现“free()”错误
我从 gdb 收到以下错误:
这是回溯:
这是代码Ipopt::TNLPAdapter::~TNLPAdapter ()
我的问题是:为什么使用free()
时会抛出错误?另外,我想单步执行,以便查看导致错误的解除分配。我相信错误发生在外部库(IPOPT)中,但我已使用调试标志编译它;这足够了吗?~TNLPAdapter()
delete[]
~TNLPAdapter()
c++ - Matlab fmincons 和 C++ 的 NLP 求解器(如 ipopt)之间的性能差距是多少?
我即将为实时应用程序编写一个算法,其中涉及一些高维 NLP(非线性规划)。
在实现之前,我需要对我的算法进行计时,看看它是否适用于实时应用程序,因此我使用 Matlab 的内置 fmincons 作为基线。
经验表明,matlab 算法的速度往往比 C++ 算法慢,所以我想估计在这种特殊情况下我可以期待什么样的性能提升?
由于我的工作主要与实时应用程序相关,因此我很少使用 NLP(非线性编程),所以我问了我的同事,他们建议我尝试 ipopt 作为开始,我在其网站上进行了谷歌搜索,那里没有针对 Matlab 的基准,也没有太多关于他们算法细节的话题(至少在Matlab中,不难检查他们的算法细节),所以我基本上对它的准确性/鲁棒性/最优性等知之甚少。
因此,这里有关 NLP 的 C++ 实现的任何帮助都会非常有帮助,在此先感谢。
build - 构建错误:错误的重定位地址
我正在尝试使用 MingW 64 在 64 位机器上使用 MKL blas 构建 IPopt,我可以使用以下命令完成配置过程:
我收到成功的配置消息,但是当我尝试继续“make”时,我收到如下错误:
如果有人可以提供帮助,我将不胜感激。
跟进:我想我找到了错误的根源,当运行configure时,它会回到MKL的共享库并获取它的路径(在configure日志文件中可用):
这确实不是一条捷径!所以我想这会引发问题,但我不知道如何强制配置获取短路径!此外,我使用的是 Windows 8 64 位,尽管启用了 8.3 命名约定(Reg. Key 设置为 0),但我仍然只获得某些目录的 8.3 名称,例如我没有得到 Program Files 和 Program Files 的短路径(x86 )。
r - 获取错误(as.character(FUN),mode =“function”,envir = envir)
我是 R 新手,如果这个问题有点傻,请原谅我。我正在尝试为值函数迭代编写一个简单的 while 循环。我的函数(optim.routine)使用求解器 ipoptr。这是我的代码:
其中 optim.routine 是以下函数:
deriv 是一个计算导数的函数。
如果我尝试运行代码,我会收到以下错误:
如果我调试函数:
如果我只在没有 while 循环的情况下获取函数,则不会显示错误。老实说,我不知道。任何帮助是极大的赞赏。谢谢!
克劳迪娅
python-2.7 - 在 Ubuntu 12.04 中安装 pyipopt 时发生错误
安装 IPOPT 并尝试在 Ubuntu 12.04 框中安装 pyipopt,我遇到以下错误:
python setup.py install
导致以下错误:
运行 install
running build
running build_py
running build_ext
building 'pyipoptcore' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG - g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include/coin/ -I/usr/include /python2.7 -c src/callback.c -o build/temp.linux-x86_64-2.7/src/callback.o 在 src/callback.c:36:0 包含的文件中: src/hook.h:5: 29:致命错误:IpStdCInterface.h:没有此类文件或目录编译终止。
错误:命令“gcc”失败,退出状态为 1
有什么想法吗?
c# - 运行时检查失败 #0 只在被调用函数内部执行一个函数
在我的 c# 代码中,我需要调用由我创建的 dll 导出的 c++ 函数 ( myWrapper )。
当myWrapper返回时,我收到以下运行时错误:
运行时检查失败 #0 - ESP 的值未在函数调用中正确保存。这通常是调用使用一种调用约定声明的函数和使用另一种调用约定声明的函数指针的结果。
正如我将在下面展示的,我已经将调用约定指定为 __cdecl。
详细来说,我的 C# 代码:
myWrapper的 c++ 代码:
IpoptAppliationFactory函数是从IpOptApplication.hpp中的外部 dll 导入的(这是一个开源项目的一部分,可以从https://projects.coin-or.org/svn/Ipopt/stable/3.11/Ipopt/src查看/Interfaces/IpIpoptApplication.hpp)与这一行:
奇怪的是,只有在调用 myWrapper 中的“ solver- >Initialize()”时才会发生错误。如果我评论对此方法的调用myWrapper将返回而没有错误。该问题与“Ipopt::IpoptApplication”的定义无关,也与 IpoptApplicationFactory() 或 Initialize() 的实现无关,因为 1)它们来自一个众所周知的开源项目(http://www.coin-or .org/projects/Ipopt.xml)被成千上万的程序员使用,2)如果在用 c++ 代码编写的独立可执行文件中使用 myWrapper,则可以正常工作。
我已经用谷歌搜索了几个小时,我相信问题出在我调用myWrapper的方式上,但我找不到解决方案。
谁能给我一些建议?非常感谢。
罗伯托
python - Pyomo 的 SolverFactory 无法创建 Ipopt (OSX) - 可能与 COIN-OR 有关
我正在尝试使用 Pyomo 在 OSX 上找到 Python 模型的最佳值。我从https://github.com/shoibalc/recem获得了脚本,并尽可能按照说明安装了 Pyomo 和 COIN-OR,更改了一些已过时或似乎在 OSX 上不起作用的东西.
导致问题的代码如下。
这会在最后一行(“结果”)崩溃,并显示以下错误消息:
SolverFactory 无法创建求解器“ipopt”并返回一个 UnknownSolver 对象。此错误在 UnknownSolver 对象被使用时引发,就好像它是有效的一样(通过调用方法“solve”)。
原始求解器是使用以下参数创建的:solver_io:nl 类型:ipopt _args:() 选项:{} _options_str: []
我对这一切都很陌生,但我认为 Pyomo 可能无法访问它需要的 ipopt 文件,我认为该文件位于我下载的 COIN-OR 二进制文件中。我尝试将看似相关的文件添加到我的 PYTHONPATH 中,并将它们导入到脚本中,但这没有帮助。有什么想法我应该尝试下一步来完成这项工作,或者将脚本修改为可行的东西吗?
python - 为 anaconda python 安装 Ipopt
有人在 Anaconda python 上安装过 Ipopt 吗?我下载了 3.6.1 版本。此外,我按照自述文件中的说明下载了请求的 intel Fortran 库。
安装应该是直接的,通过使用configure
make
并make install
链接到它的所有依赖项。我希望我能自己解决这个问题。
如果我想在 anaconda 中使用 Ipopt,我还需要考虑什么?特别是我想构建包含 Ipopt 的 Pygmo。
或者安装 pyopt 或 Casadi 就足够了吗?
python - 如何在 python 中检查真正的相等性(numpy 数组)?
我在 python 中有一些函数返回一个 numpy.array:
它通常应该提取矩阵(rows1,cols1)的非零条目的索引。但是,我也可以手动提取索引(rows2、cols2)。问题是程序返回不同的结果取决于函数是否返回(rows1, cols1)
或(rows2, cols2)
,尽管数组应该相等。
我可能应该补充一点,这段代码是在pyipopt的上下文中使用的,它调用了一个 c++ 软件包IPOPT。然后问题出现在这个包中。
难道数组不是“完全”相等的吗?我会说它们一定是因为我没有修改任何东西,而是返回一个而不是另一个。
关于如何调试这个问题的任何想法?