Библиотеки последовательной нелинейной оптимизации в C ++ с ограничениями

Есть ли в c ++ хорошие библиотеки для последовательной нелинейной оптимизации с ограничениями?

Я ищу ограничения неравенства и / или верхнюю и нижнюю границы.

Для этого уже существует вопрос о stackoverflow, но не все из них имеют ограничения.

Я знаю о NLopt, но для моего конкретного проблема. Есть другие?


Я наконец нашел решение, которое искал, если кому-то еще интересно lpOpt


person pyCthon    schedule 10.07.2012    source источник


Ответы (1)


Один из алгоритмов SQP, который вы можете попробовать, - это DONLP2. . Изначально он был написан на Fortran 77, но есть и версия ANSI C. В нем используется плотная алгебра, поэтому он в первую очередь подходит для небольших и средних задач. Это бесплатно для академического использования. Вам нужно запросить код напрямую у автора, следуйте инструкциям по ссылке.

ОБНОВЛЕНИЕ Последовательное квадратичное программирование - это только один из подходов к решению нелинейных целевые функции с ограничениями, существуют также, например, методы внутренней точки. Одной очень хорошей крупномасштабной альтернативой C ++ с открытым исходным кодом, которая применяет подход внутренней точки, является Ipopt (уже упоминалось в другом ответе). Также существует, например, коммерческий пакет KNITRO. Если вы не можете или не хотите предоставлять градиенты целевой функции и ограничений, вы также можете взглянуть на COBYLA2, версию которого можно загрузить здесь.

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

person Anders Gustafsson    schedule 11.07.2012
comment
@pyCthon Я заметил, что вы сами нашли Ipopt. Я отредактировал свой ответ на основе вашего вывода, а также добавил несколько дополнительных ссылок. Хоть и немного поздно, но я надеюсь, что вы все равно найдете их полезными. - person Anders Gustafsson; 23.07.2012