Я пытаюсь преобразовать некоторый код, написанный на MATLAB, в C ++. У меня возникли некоторые (или на самом деле довольно много) проблемы с поиском альтернативы функции «fminunc», которая используется в коде MATLAB, которую я могу заменить и использовать в коде C ++. Я просматривал библиотеку «dlib», потому что слышал, что это может быть функция, которую я могу использовать, но я не уверен, какую функцию использовать.
Вот как «fminunc» используется в коде MATLAB, который я хочу преобразовать:
[theta, cost] = ...
fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
Кто-нибудь знает какие-нибудь хорошие оптимизирующие функции, подобные этой в C ++?
В dlib есть несколько оптимизаторов, некоторые из которых используют градиенты, а другие не просто работают над функциями черного ящика. Вы можете увидеть некоторые примеры здесь http://dlib.net/optimization_ex.cpp.html и в целом здесь http://dlib.net/optimization.html.
Я считаю, что вы ищете Google Церера Солвер, библиотека C ++ с открытым исходным кодом для моделирования и решения больших сложных задач оптимизации. Код предназначен для решения двух классов задач:
Автоматическое дифференцирование также поддерживается.
Несколько интересных примеров приложений можно найти Вот.