levmar

Скріншот програми:
levmar
Дані програми:
Версія: 2.6
Дата завантаження: 15 Apr 15
Розробник: Manolis Lourakis
Ліцензія: Безкоштовно
Популярність: 18

Rating: 5.0/5 (Total Votes: 1)

levmar є реалізація нелінійної Левенберга-Marquardt найменших квадратів алгоритми в C / C ++.

Дня lmder від MINPACK, реалізований на початку 80-х в Аргонської національної лабораторії, мабуть Найбільш широко використовується вільну реалізацію алгоритму LM. lmder написано в FORTRAN77 і впродовж багатьох років зарекомендувала себе надійним частина програмного забезпечення. Враховуючи, що на мові FORTRAN функції можуть бути викликані з C / C ++, можна задатися питанням про мотивації для написання версію LM в С. Ну, проблема в тому, що, коли FORTRAN викликається з C, програміст повинен бути в курсі (і відповідають ) кілька правил, що стосуються ім'я перекручуючи, передачі параметрів багатовимірної розміщення в пам'яті масиву, конвенцій зчеплення і т.д., які є неприродними в порівнянні зі звичайними правилами C. Друга причина в тому, що такий підхід приймає як належне, що FORTRAN компілятор для цільової середовища програмування доступні, які не обов'язково бути так. Інша причина пов'язана з нездатністю зрозуміти внутрішню роботу FORTRAN реалізації: Іноді, коли це необхідно чітко розуміти, що FORTRAN код робить деякі частини його можуть здатися незрозумілим для програмістів без знання FORTRAN. Автоматична FORTRAN для C перекладачів (наприклад, f2c) не вирішують проблему, так як проводиться C код досить нерозбірливо на «непосвячених» людей. Крім того, документація, що описує математику, на яких реалізація на основі може бути неясним або недоступні. Останнє, але не менш важливо, здійснення кандидат LM в C повинен бути вільним і технічно обгрунтованим. Наприклад, C варіант алгоритму LM представлені в "Чисельні Рецепти" книги (наприклад, mrqmin), не завжди життєздатним вибором: Крім свого буття захищені, це має репутацію не вистачає надійності

. За вказаними вище причин, я розробив levmar пакет, який включає в себе реалізацію C LM ароматів, які також можна використовувати з C ++. levmar включає в себе двомісні та одномісні реалізації точність LM, як з аналітичної та кінцевих різниць наближено якобіанам. Він надається безкоштовно, відповідно до умов GNU General Public License. Математична теорія, що лежить без обмежень levmar докладно описано в лекціям, які мають право Методи нелінійного методу найменших квадратів проблем, К. Мадсен, HB Nielsen і О. Tingleff, Технічний Університет Данії; Matlab реалізації алгоритмів, представлених у лекціях, також доступні. Зауважимо, однак, що постановка задачі мінімізації прийнятої тут трохи відрізняється від тієї, що описана в конспектів Використання

функції в :.

Levmar пропонує кілька користувальницьких викликаються функції, котрі підпорядковуються наступну угоду про імена: перша буква (г або S) Установка подвійний або одинарної точністю, і суфікс (_der або _dif) позначає аналітичну або приблизне якобіан. Якщо присутній, LEC, BC і BLEC компоненти увазі лінійне рівняння, коробка і одночасно вікно і лінійних обмежень рівняння, відповідно. Більш конкретно, levmar включає в себе функції нижче:

безумовної оптимізації

dlevmar_der (): подвійний точності, аналітична Якобі
dlevmar_dif (): подвійний точності, кінцевих різниць наближено Якобі
slevmar_der (): з одинарної точністю, аналітична Якобі
slevmar_dif (): з одинарної точністю, кінцевих різниць наближено якобіан

оптимізації з обмеженнями

dlevmar_lec_der () : подвійний точності, лінійні обмеження рівняння, аналітичне Якобі
dlevmar_lec_dif (): подвійний точності, лінійні обмеження рівняння, різницева наближено якобіан
slevmar_lec_der (): з одинарної точністю, лінійні обмеження рівняння, аналітичне Якобі
slevmar_lec_dif (): з одинарної точністю, лінійні обмеження рівняння, різницева наближено Якобі

dlevmar_bc_der (): подвійний точності, коробка обмеження, аналітична Якобі
dlevmar_bc_dif (): подвійний точності, коробка обмеження, кінцева Різниця наближено якобіан
slevmar_bc_der (): з одинарної точністю, коробка обмежень, аналітична Якобі
slevmar_bc_dif (): з одинарної точністю, коробка обмеження, кінцева різниця апроксимується Якобі

dlevmar_blec_der (): двоспальне точність, коробка і лінійні обмеження рівняння, аналітичне Якобі
dlevmar_blec_dif (): подвійний точності, коробка і лінійні обмеження рівняння, різницева наближено якобіан
slevmar_blec_der (): одинарної точності, коробка і лінійного рівняння обмежень, аналітичного градієнта
slevmar_blec_dif (): одинарної точності, коробка і лінійне рівняння обмеження, кінцева різниця апроксимується Якобі

Зверніть увагу, що за допомогою кінцевих різниць для апроксимації Якобі результати в повторюваних оцінок функції для установки. Прагнучи зменшити загальну кількість цих оцінок, функції xxxxxxx_dif реалізації січними наближення до Якобі, використовуючи рангу поновлення Бройдо. Всі функції вирішити ту ж саму проблему, тобто вони прагнуть вектора параметрів р, що найкраще описує (з точки зору норми L2) Вимірювання вектор х. Точніше, враховуючи вектор-функцію F: R ^ т -> R ^ N з п> = т, вони виробляють AP таким чином, що F (P) ~ = х, тобто квадрата норми || е || ^ 2 = | | XF (р) || ^ 2 зведено до мінімуму. Крім того, коробка обмеження виду фунт [я]

Що нового У цьому випуску:

  • Ця версія додає підтримку для діагонального масштабування для xlevmar_bc_der (), яка може поліпшити збіжність, коли відправною точкою є далеко від істинного мінімізатор.
  • лінійний решатель системи, що підтримують паралельний Чолескі розкладання з плазмою, бібліотеки лінійної алгебри для багатоядерних процесорів.
  • Лінійні вирішувачі були закріплені так, що вони працюють на нижчих трикутників симетричних матриць, що призводить до підвищення продуктивності кеша.
  • Файли конфігурації CMake для складання проекту були переглянуті.
  • Кілька інші незначні зміни були внесені.

Що нового у версії 2.5:

  • УВАГА У попередніх версіях КОРИСТУВАЧІВ: Для кращого послідовності та уникнення конфлікти, ім'я файлу заголовка levmar була змінена з lm.h в levmar.h; будь ласка, поновіть ваші вихідні файли, відповідно.
  • Додана підтримка для мінімізації при одночасному коробці, лінійних рівнянь і нерівностей обмежень (див функцій xlevmar_bleic_der () & xlevmar_bleic_dif ()).
  • Реалізовані зручності обгортки, щоб xlevmar_bleic_der () і xlevmar_bleic_dif () справу з більш простими обмеженнями випадках, наприклад, xlevmar_blic_der () і xlevmar_blic_dif () мінімізація підтримка в графі і лінійні обмеження у вигляді нерівностей тільки.
  • Додана лінійний решатель системи, засновані на розкладанні Удут (тобто, SQRT без Cholesky).
  • Прибрані деякі зайвого копіювання пам'яті від більшості лінійних решателей.
  • Додана нова тестової задачі підбору даних (Осборн).
  • Зроблено кілька інших незначних змін.

Що нового у версії 2.4:

  • УВАГА У попередніх версіях КОРИСТУВАЧІВ: розмір інфо аргументу (тобто, LM_INFO_SZ) була збільшена на один, щоб розмістити новий зворотний поле (тобто, інформації [9]), що відповідає загальній кількості лінійних систем, що вирішуються в ході мінімізації. Індекси раніше повернутих полів в інформаційному масиві залишаються незмінними.
  • Реалізована більш кеш-пам'яті ефективна схема для обчислення приблизного Гессе J ^ T * J і J ^ T * E проблем малих мінімізації.
  • запевнив, що в будь-який робочий пам'яті зберігається між викликами лінійних решателей вивільняється при припиненні levmar процедур.
  • запевнив, що лінійні вирішувачі використовують мінімальну необхідну кількість допоміжного пам'яті, уникаючи іноді по-асигнувань.
  • Реалізована схема розгортання циклу для прискорення обчислення е = х-Гк.
  • Виправлена ​​пара питань з вирівнюванням пам'яті на 64-бітних системах.
  • Додані функції для обчислення коефіцієнта детермінації.
  • справу з невеликими проблемами.

Схожі програми

levmar

Коментар не знайдено
додати коментар
Включіть картинки!
Пошук за категоріями