Нелинейная функция минимизации C ++

0

Я пытался перенести код с MATLAB на C++ и наткнулся на очень неожиданную трудность. Я не могу найти эквивалент C++ для MATLAB fminunc.

Проще говоря, определение задач сводится к минимуму f (x), для вектора x, скалярной функции f (x) и внутренней угадывания x_0.

До сих пор мои поисковые работы только выявили библиотеку под названием MinPack, которая не может адресовать случай, когда f (x) является скаляром, а x - вектором.

Разумеется, язык программирования, столь же старый, как время, имеет свободно доступную реализацию классических числовых рецептов для нелинейной оптимизации? Или я слишком оптимистичен здесь? Даже базовые подходы, такие как градиентный спуск, будут большим улучшением по сравнению с чем-либо...

  • 1
    Кто-то может рассматривать все еще процветающий рынок Matlab и тому подобное как свидетельство того, что вы действительно чрезмерно оптимистичны в своих ожиданиях, как свидетельство того, что есть деньги, которые можно заработать на написании программ, для которых нет уважаемых бесплатных программ с открытым исходным кодом. как правило, доступны. И, что еще проще, C ++ столь же стар, как и время, - очень забавное замечание.
  • 0
    @HighPerformanceMark Бог сказал: photon_t letThereBeLight() { return light; }
Показать ещё 3 комментария
Теги:
mathematical-optimization
numerical
minimization

3 ответа

1

Здесь еще один хороший: GSL, в частности http://www.gnu.org/software/gsl/manual/gsl-ref_36.html#SEC498

1

Моим личным выбором был бы IPOPT, нелинейный решатель общего назначения. Он знает гораздо больше, чем вы просили.

Другие варианты включают:

Последнее, к сожалению, связано с взаимодействием с FORTRAN; это болезненно и скучно, но на самом деле не ракетостроение.

1

Проверьте NLopt. Это то, что я использую сначала при переносе материала с MATLAB на C/C++, и он работает очень хорошо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню