- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
NLopt 目标函数如下所示:
double myfunc(const std::vector<double> &x, std::vector<double> &grad, void *my_func_data)
x 是被优化的数据,grad 是梯度向量,my_func_data 保存额外的数据。
我有兴趣将 Armadillo 矩阵 A 和 B 提供给 void *my_func_data。
我摆弄了 Armadillo 的成员函数
mat A(5,5);
mat B(5,5);
double* A_mem = A.memptr();
double* B_mem = B.memptr();
这给了我一个指向矩阵 A 和 B 的指针。我正在考虑定义另一个指向这些指针的指针:
double** CombineMat;
int* Arow = A.n_rows; int* Acols = A.n_cols; //obtain dimensions of A
int* Brows = B.n_rows; int* Bcols = B.n_cols; // dim(B)
CombineMat[0] = A_mem; CombineMat[1] = Arows; CombineMat[2] = Acols;
CombineMat[3] = B_mem; CombineMat[4] = Brows; CombineMat[5] = Bcols;
然后将 *CombineMat 作为 my_func_data 传递。
回答
我在 here 的帮助下回答了我自己的问题.
mat A(2,2);
A << 1 << 2 << endr << 3 << 4;
mat B(2,2);
B << 5 << 6 << endr << 7 << 8;
mat C[2];
C[0] = A;
C[1] = B;
opt.set_min_objective(myfunc, &C);
一旦进入 myfunc,C 中的数据就可以像这样转换回 Armadillo 矩阵:
mat* pC = (mat*)(my_func_data);
mat A = pC[0];
mat B = pC[1];
最佳答案
您还可以使用 Armadillo 的 Cube类(“3D 矩阵”,或三阶张量)。
立方体中的每个切片只是一个矩阵。例如:
cube X(4,5,2);
mat A(4,5);
mat B(4,5);
X.slice(0) = A; // set the individual slices
X.slice(1) = B;
mat& C = X.slice(1); // get the reference to a matrix stored in a cube
关于armadillo - NLopt 与 Armadillo 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8434884/
Servus 伙计们我正在用 Nlopt(SLSQP) 做一个关于参数识别的项目,我写了一个测试代码,但是在 3 次迭代之后,编译器总是抛出关于 Nullptr 在 'myfunc' 中的 'grad
任何人都知道 NLopt 是否适用于单变量优化。尝试运行以下代码: using NLopt function myfunc(x, grad) x.^2 end opt = Opt(:LD_MM
我正在尝试为一组我没有导数的黑盒函数(神经网络)实现一个优化器(虽然这可能与这个问题无关)。我想使用 nlopt,所以我一直在阅读他们网站上的教程,该教程使用 Non linear constrain
我使用 NLopt 库和 python 绑定(bind)。 opt = nlopt.opt(nlopt_algorithm, N) opt.set_max_objective(func_to_maxi
我需要一些帮助来构建链接到 NLopt 库(http://ab-initio.mit.edu/wiki/index.php/NLopt)的 Rcpp 包。 我在 Windows 上使用 RStudio
我正在尝试向CRAN提交一个在预测试期间失败的软件包 Debian上的进程。 我使用一些与nlopt优化接口的C ++代码 Rcpp / RcppArmadillo的库(使用)。因此,我的软件包需要n
我想找到问题的最佳解决方案。但是,解决方案(染色体)表示为整数 vector (长度未知)。 据我所知,NLOPT接受double*作为输入。此外,属性的数量是 constant .那么是否有可能环绕
我正在尝试从 Homebrew 科学存储库安装 NLopt 库 ( http://ab-initio.mit.edu/wiki/index.php/NLopt )。它安装得很好,只是我无法从 pyth
当我在 python 中运行以下简单的 NLOPT 示例时: import numpy as np import nlopt n = 2 localopt_feval_max = 10 lb = np
我难住了。我在 R 中为 NLOPT 制定了一个问题。当前问题解决了 180 个具有 28 个等式约束的变量 该代码是从一个更简单的问题版本中重新使用的,在我的脚本的前面,有 36 个变量和 20 个
在 Julia 中,人们可以使用 NLopt 来解决各种问题。 NLopt有很多算法和here我们可以找到一个使用 LD_MMA 符号来利用 MMA 的示例。 我的问题是:是否有 NLopt 中包含的
NLopt 目标函数如下所示: double myfunc(const std::vector &x, std::vector &grad, void *my_func_data) x 是被优化的数据
我正在尝试向 CRAN 提交一个在预测试期间失败的包Debian 上的进程。 我使用一些与 nlopt 优化接口(interface)的 C++ 代码带有 Rcpp/RcppArmadillo 的库(
我正在解决金融的标准优化问题 - 投资组合优化。在绝大多数情况下,NLopt 正在返回一个合理的解决方案。然而,在极少数情况下,SLSQP 算法似乎迭代到正确的解决方案,然后无缘无故地选择从迭代过程的
我正在使用 C++ 中的 NLopt 库、COBYLA 算法 来最小化基于对数的成本函数。我已经在 Matlab 中使用 fmincom 实现了相同的功能。Matlab 函数的性能比 NLopt 好得
我正在从 Windows cmd 提示符下编写一个 c++ 程序,并使用 mingw (g++) 进行编译。这个程序需要一个非线性优化器,NLOpt 看起来是个不错的选择。我是学c++的uni类(cl
我正在尝试安装(在基于 linux 的集群上)R 包 FactoMineR,它需要 nloptr,而 nlopt 又需要 nlopt。仅使用 install.packages("nloptr") 不起
我在 R 中安装包 lme4 时遇到问题。按照输出。貌似打不开nlopt。有人知道如何解决吗?我在 Linux 16.10 checking nlopt.h usability... no check
我正在使用 NLOpt 的 Python 界面运行优化。在某个时刻,经过多次迭代后,我得到一个 nlopt.RoundoffLimited 异常。根据文档 (http://ab-initio.mit.
我是一名优秀的程序员,十分优秀!