所以我试图用nlopt库解决一个非线性方程。我创建了一个名为 Optimizer 的类。在这个类中,我试图构建我需要的所有函数(目标函数、约束)。我的目标函数定义如下:
double Optimizer::myvfunc(const std::vector<double> &x, const std::vector<double> &grad, void *func_data) {
if (!grad.empty()){
build_gradient(x,grad);
}
double term=0;
for (int i = 0; i < support_points; i++) {
term += calc_distance_term(i,x);
}
return term;
}
现在我想调用一个方法 Optimizer::optimize(),然后设置 nlopt 算法启动的所有约束和要求。我在用着:
double Optimizer::optimize() {
nlopt::opt optimizer(nlopt::LD_SLSQP, (u_int)3*support_points);
optimizer.set_min_objective(myvfunc, NULL); // compile error
return 0;
}
这是我得到一个编译错误的地方,我无法解释。
参数类型不匹配:函数类型中的参数数量不兼容
我尽量坚持使用教程,但为什么会出现这个错误?