Поэтому я пытаюсь решить нелинейное уравнение с nlopt библиотека.
Я создал класс под названием Оптимизатор. В этом классе я пытаюсь построить все функции, которые мне нужны (целевая функция, ограничения). Моя целевая функция определяется следующим образом:
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;
}
Здесь я получаю ошибку компиляции, которую не могу объяснить.
Несоответствие типов параметров: несовместимое количество аргументов в типах функций
Я старался как можно больше придерживаться Учебника, но почему я получаю эту ошибку?
Задача ещё не решена.
Других решений пока нет …