математика — разреженные неотрицательные наименьшие квадраты в переполнении стека

Я ищу пакет программ для решения очень большой, разреженная нелинейная задача наименьших квадратов в C ++. Я сталкивался с большим количеством современных библиотек linalg в C ++ (eigen, armadillo, boost и т. Д.), Но ни в одной из них, похоже, нет такого решателя (или даже обычного решателя наименьших квадратов). нравится избегать беспорядочных обращений к старому интерфейсу C / Fortran, если это возможно. Спасибо!

2

Решение

Я бы просто использовал решатель НЛП общего назначения IPOPT написанный на C ++. Это самый надежный решатель среди тех, что я пробовал, и он предназначен и успешно используется на очень большой проблемы.

Изменение требований (например, добавление ограничений) не будет проблемой, если вы используете универсальный IPOPT.

Часть процедуры решения, отнимающая много времени, состоит в том, чтобы решать линейные системы на каждом шаге итерации, поэтому стоит приобрести лучший пакет линейного решателя + LinAlg для вашей платформы.

К сожалению, IPOPT вызывает фортрановые подпрограммы внутренне, поэтому вам понадобится компилятор Фортрана, который является своего рода болью.

Если IPOPT недостаточно, вам придется искать конкретный решатель проблем.

0

Другие решения

Если вам не нужны ограничения, попробуйте Церера или же g2o. Оба строятся поверх Eigen и могут использовать разреженные матричные решатели, т.е. SuiteSparse и друзья.

0

По вопросам рекламы [email protected]