Библиотека нелинейного программирования на C++

Я ищу рекомендации для библиотек C++ для нелинейного программирования (не только для целых чисел!).

предпочтение отдается активно поддерживаемым решениям F/OSS, но активно поддерживаемые коммерческие решения, предлагающие бесплатные версии оценки, приемлемы.

спасибо заранее!

Edit: как спрошено, здесь больше деталей:

приложение, над которым я работаю, просто, и речь идет о минимизации полиномы степени 4 и выше (до 11) с небольшим набором (~20) ограничений, выраженных в виде неравенств (опять же, как полиномы, степень

наконец, мне нужно решение, которое работает на Windows, а кроссплатформенный будут предпочтительный.

3 ответов


NLopt имеет твердый код C для доброй дюжины алгоритмов, включая COBYLA, Ограниченная оптимизация линейными Аппроксимациями для оптимизации Без производных с нелинейным неравенством и ограничениями равенства, М. J. D. Пауэлл.
Добавлено:здесь являются запусками нескольких непроизводных оптимизаторов в NLopt.
Для тестовых функций Rosenbrock и Powell в 5d и 10d они все очень чувствителен к случайным startpoints; ymmv.


Я не уверен, но может быть ROOT от ЦЕРН будет соответствующий для вас. Это действительно огромная библиотека (ROOT::Math:: Полином класс, например) из самого ЦЕРНа.

Я должен сказать, что это не библиотека "одна минута, чтобы узнать", но имеет оба:консоль для работы со всеми математическими материалами в режиме реального времени (похоже на строку Mathcad cmd) и libs и библиотеки вы можете связать с вашим кодом статически. И это крест библиотека платформы. Более того, самая мощная особенность ROOT заключается в том, что вы можете создавать почти все виды диаграмм и графиков.


самая надежная такая библиотека, которую я знаю, это IPOPT.

Он удивительно надежен, он дал мне результаты для задач химического машиностроения, которые я не мог решить даже с коммерческими решателями. Посмотри успехов для дальнейших примеров применения.