我遇到了一个需要在Rcpp中实现约束优化的问题。任何人都可以提供一些关于如何做到这一点的提示吗?
1)我搜索了当前的Rcpp软件包,但没有找到可以用(线性)约束进行优化的软件包。
2)我想在Rcpp中调用R函数optim()但是被告知在迭代中调用Rcpp中的R函数不是一个好主意。
3)我尝试使用dlib库(由R package dlib提供),但在定义http://dlib.net/optimization_ex.cpp.html中给出的示例函数时出错。
我的Rcpp代码:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::plugins(cpp11)]]
// [[Rcpp::depends(dlib)]]
#include <dlib/optimization.h>
using namespace dlib;
using namespace std;
typedef matrix<double,0,1> column_vector;
// [[Rcpp::export]]
double rosen (const column_vector& m)
{
const double x = m(0);
const double y = m(1);
double res = 100.0*pow(y - x*x,2) + pow(1 - x,2);
return(res);
}
错误消息:
no matching constructor for initialization of
'dlib::matrix<double,0,1,dlib::memory_manager_stateless_kernel_1,
dlib::row_major_layout>'
我是Rcpp的初学者,希望有人能指出我正确的方向。谢谢!