问题标签 [nlopt]

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 投票
1 回答
1080 浏览

armadillo - NLopt 与犰狳数据

NLopt 目标函数如下所示:

x 是要优化的数据,grad 是梯度向量,my_func_data 保存附加数据。

我有兴趣将犰狳矩阵 A 和 B 提供给 void *my_func_data

我摆弄犰狳的成员函数

这给了我一个指向矩阵 A 和 B 的指针。我正在考虑定义另一个指向这些指针的指针:

然后将 *CombineMat 作为 my_func_data 传递。

  1. 这是这样做的方法吗?好像很笨拙...
  2. 一旦通过了 CombineMat,当我在 myfunc 中时,如何将 void 类型重新转换为可用的东西?

回答

我在这里的帮助下回答了我自己的问题。

一旦进入 myfunc,C 中的数据可以转换回 Armadillo 矩阵,如下所示:

0 投票
1 回答
1065 浏览

c++ - 指向成员函数的函数指针

我想使用一个库(nlopt),它有一个函数 set_min_objective,它接受一个指向数值函数 myfunc 的指针并找到它的最小值。我想创建一个包含适当初始化的成员函数的类。然后 set_min_objective 将在特定实例中找到最佳值(以下示例中的 myP)。调用顺序为:

我想使用类似的东西:

我在编译时得到的错误是:

让 set_min_objective 接受 myP.f 作为指向函数的普通指针的最简单解决方案是什么?请注意,myP.f 和 myfunc 具有相同的参数和返回值类型。

谢谢,

京东

0 投票
0 回答
845 浏览

c++ - NLOpt 与 windows 窗体

尝试在 Windows 窗体应用程序中使用 nlopt 库 (http://ab-initio.mit.edu/wiki/index.php/NLopt_Tutorial) 时遇到严重问题。我创建了以下命名空间,它在控制台应用程序中完美运行。

它优化了简单的非线性约束最小化问题。当我尝试在 Windows 窗体应用程序中使用此命名空间时,就会出现问题。我经常在 myfunc 中遇到未处理的异常,由于某种原因将“x”视为空指针,因此在尝试访问其位置时会导致错误。我相信这个问题是由 Windows 窗体使用 CLR 的事实引起的,但我不知道它是否可以解决。我正在使用 Visual Studio 2008,测试程序是简单的控制台项目(工作正常)和 Windows 窗体项目(导致上述错误)。我的测试代码基于提供的链接中的 C 教程。我虽然尝试了 C++ 版本,它在控制台应用程序中再次正常工作,但在 Windows 窗体应用程序中给出了调试断言失败错误。
所以我想我的问题是:我有工作的 Windows 窗体应用程序,我想使用 NLOpt。有没有办法使这项工作?

0 投票
0 回答
844 浏览

c++ - C ++中边界约束最小二乘优化的函数?

我对使用 Visual C++ 2010 Express 相当陌生,但我对基础知识并不陌生,我正在尝试弄清楚如何使用外部库来执行边界约束最小二乘优化。

简单地说,我想使用线性最小二乘法从以下位置找到矩阵 W:

在哪里

约束在 W 的元素的值上——我们称元素为“w”。

在 MATLAB 中执行此操作相当简单,但我需要在 C++ 中实现。我已经为矩阵 X 和 T 的公式实现了我的代码的初始部分。

我可以在 Visual C++ 2010 Express 中使用任何库/函数来完成边界约束最小二乘优化吗?我尝试过使用 ALGLIB、LEVMAR 和 NLOPT。

ALGLIB 需要以自己的数据类型定义数组。

LEVMAR 关于安装和我需要使用什么功能的信息很少。

NLOPT 似乎没有这个功能。此外,即使我使用此处给出的说明生成了一个 lib 文件并在 VC++ 中链接了 lib 和源文件,我似乎也无法让它工作。

任何人都可以帮我提出任何建议吗?这在 MATLAB 中很容易实现,但恐怕我需要使用 C++。

0 投票
1 回答
628 浏览

python - Import _nlopt.pyd error in OSX

I followed step with nlopt and get a _nlopt.pyd

When i try to use nlopt.py(it's have code like follow)

and it's gives

I am sure the _nlopt.pyd is in the folder

And it's work in Windows7

Any help?

0 投票
1 回答
1069 浏览

python - NLOpt 中的向量值约束

我正在尝试为我的最小化问题添加一些等式和不等式约束。我正在使用nlopt Python API。

特别是我想添加一些向量值约束。我的代码看起来像这个例子:

这完全遵循 nlopt wiki 中的说明。现在,如果我运行它,我会得到:

0 投票
0 回答
414 浏览

nlopt - nlopt_add_equality_constraint 不起作用

我写了一个程序,

最小化:f = x^2 + y^2

约束:c:x-1 < 0 ceq:x+y-5=0

我得到了答案:x = 0.12219 y = 5.678 不满足 ceq。我不知道如何解决它。

我的完整源代码在这里

主要功能如下:

更新!!!!!阅读文档后,我发现算法“MMA”不支持“等约束”。

将“MMA”替换为“SLSQP”可能会解决此问题。

0 投票
0 回答
319 浏览

c# - 通过包装器在 c# 中使用 NLOpt(一个 c++ 库)时出现 SEHException

我通过这个包装器在 c# 中使用优化库(NLOpt,为 c++ 编写):

https://github.com/roryclune/NLOptDotNet

当向问题添加超过 15 个约束时,我得到一个 SEHException。通过将 FunctionDelegate 传递给求解器来添加约束。

这是异常堆栈跟踪: System.Runtime.InteropServices.SEHException (0x80004005):外部组件已引发异常。在 _CxxThrowException(Void* , s _ThrowInfo* ) 在 nlopt.opt.mythrow(opt* , nlopt_result ret) 在 nlopt.opt.add_equality_constraint(opt* , IntPtr vf, Void* f_data, Double tol) 在 NLOptDotNet.NLOptWrapper.AddFunction( FunctionType ftype, FunctionDelegate funcDelegate, Object data, Double tol)

我是否遗漏了某些东西,或者它一定是包装器\库中的错误?这是代码,我在 --->>> 行得到了异常:

0 投票
1 回答
603 浏览

c++ - 如何在 C++ 中添加库?

我是 C++ 新手,我正在尝试使用 VS 2013 将 NLopt 库添加到 C++。NLopt 是一个非线性优化库(http://ab-initio.mit.edu/wiki/index.php/NLopt_C-plus-plus_Reference #Compiling_and_linking_your_program_to_NLopt)。NLopt 有一个 DLL 文件和 .h 文件,我想不出办法让它们工作。如果有人能给我一个关于如何导入这个库的快速指南,我将不胜感激。

先感谢您。

0 投票
1 回答
1204 浏览

python-2.7 - 使用 Python API 在优化失败后获取 NLOpt 结果

我正在使用 NLOpt 的 Python 接口进行优化。在某个时刻,经过多次迭代,我得到一个 nlopt.RoundoffLimited 异常。根据文档(http://ab-initio.mit.edu/wiki/index.php/NLopt_Reference#Error_codes_.28negative_return_values.29),在出现此类异常后,“优化通常仍会返回有用的结果”。我如何实际查看中间结果?我正在运行如下代码:

我可以很好地使用 获得目标值opt.last_optimize_result(),但我找不到 API 调用来获取导致该目标值的参数。

谢谢!