Использование целевой функции с библиотекой nlopt в cpp

Поэтому я пытаюсь решить нелинейное уравнение с 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;
}

Здесь я получаю ошибку компиляции, которую не могу объяснить.

Несоответствие типов параметров: несовместимое количество аргументов в типах функций

Я старался как можно больше придерживаться Учебника, но почему я получаю эту ошибку?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]