Сигнатура функции ограничения векторного неравенства NLOpt в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сигнатура функции ограничения векторного неравенства NLOpt в C++

Сообщение Anonymous »

Я работаю над реализацией задачи нелинейной оптимизации с использованием библиотеки NLOpt, и у меня возникли проблемы с определением ограничения векторного неравенства с помощью интерфейса C++.
NLOpt документы, похоже, указывают, что они поддерживают определение функций стоимости, а также функций ограничения равенства и неравенства, которые принимают аргументы std::vector&, а не указатели на массивы (

Код: Выделить всё

double*). См. сигнатуры myvfunc()
и myvconstraint() в разделе «Пример на C++» по следующей ссылке.
До сих пор мне удавалось добиться успеха. написав как мою функцию стоимости, так и мое ограничение равенства со следующими сигнатурами функций:

Код: Выделить всё

double cost_fcn(const std::vector& x, std::vector& grad, void* data);
double eq_constraint(const std::vector& x, std::vector& grad, void* data);
Документация NLOpt также описывает поддержку векторных ограничений равенства и неравенства. Но сигнатуры функций (показанные ниже), которые они предоставляют, имеют формат C (с использованием указателей массива).

Код: Выделить всё

void ineq_constraint(
unsigned m, double *result, unsigned n, const double* x, double* grad, void* f_data);
где m — размерность вектора ограничений, а n — размер пространства параметров.
Это из документации не ясно, что сигнатура функции в стиле C++ поддерживается для векторных ограничений, но я пытался реализовать следующее, и это не работает:

Код: Выделить всё

void ineq_constraint(
std::vector& result, const std::vector& x, std::vector& grad, void* data);
На этом этапе я попытаюсь использовать сигнатуру функции в стиле C, но было бы неплохо получить окончательный ответ относительно того, поддерживает ли NLOpt в настоящее время C++. сигнатура функции стиля для векторных ограничений.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ature-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»