Оскільки в одній з моїх відповідей було цитовано, я спробую пояснити, чому я запропонував використовувати IPOPT замість MINPACK.
Мої заперечення щодо використання MINPACK не мають нічого спільного з алгоритмами, які використовує MINPACK, і всім пов'язаним з їх реалізацією. Моє основне заперечення полягає в тому, що програмне забезпечення датується 1980 роком, а останній раз оновлено у 1999 році. Jorge Moré є пенсіонером; Я сумніваюся, що він чи хтось із інших авторів цього програмного забезпечення більше не підтримує вкладки, і немає жодної команди людей, які активно його підтримують. Єдина документація, яку я можу знайти на це програмне забезпечення, - це оригінал технічного звіту Argonne 1980 р., Написаний Хорхе Море та іншими авторами MINPACK. (Розділи 1-3 можна знайти тут , а Розділ 4 - тут.) Після пошуку вихідного коду MINPACK та аналізу документації (PDF-файли скановані зображення, і їх неможливо шукати), я не бачу жодних варіантів, щоб пристосувати обмеження. Оскільки оригінальний плакат нелінійної задачі найменших квадратів хотів вирішити обмежену нелінійну задачу з найменшими квадратами, MINPACK навіть не вирішив цю проблему.
Якщо ви подивитеся на список розсилки IPOPT, деякі користувачі вказують, що продуктивність пакету щодо нелінійних проблем з найменшими квадратами (NLS) є змішаною щодо алгоритмів Левенберга-Маркварда та більш спеціалізованих алгоритмів NLS (див. Тут , тут і тут ). Продуктивність IPOPT щодо алгоритмів NLS, безумовно, залежить від проблеми. Враховуючи, що відгуки користувачів, IPOPT здається розумною рекомендацією щодо алгоритмів NLS.
Однак ви добре зазначаєте, що алгоритми NLS слід досліджувати. Я згоден. Я просто думаю, що слід використовувати пакет, більш сучасний, ніж MINPACK, тому що я вважаю, що він буде краще працювати, бути більш корисним та матиме підтримку. Церера здається цікавим пакетом кандидатів, але зараз вона не може впоратися із обмеженими проблемами. ТАОбуде працювати над проблемами з мінімальними квадратами, хоча він не реалізує класичний Левенберг-Маркард, а натомість реалізує алгоритм, що не містить похідних. Алгоритм без похідних, ймовірно, добре би працював для масштабних проблем, але я не використовував би його для маломасштабних проблем. Я не міг знайти жодного іншого пакету, який би викликав велику впевненість у їх розробці програмного забезпечення. Наприклад, GALAHAD, схоже, не використовує контроль версій або автоматичне тестування на перший погляд. MINPACK теж не робить цього. Якщо у вас є досвід роботи з MINPACK або рекомендації щодо кращого програмного забезпечення, я все чую.
Зважаючи на це, повертаючись до цитати мого коментаря:
Будь-яка система рівнянь еквівалентна задачі оптимізації, саме тому методи оптимізації, засновані на Ньютоні, дуже схожі на методи, засновані на Ньютоні, для рішення систем нелінійних рівнянь.
Кращий коментар - це, мабуть, щось, що стосується:
Коли ми хочемо розв’язати систему рівнянь з невідомими , ми можемо сформулювати це як найменш задачу оптимізації квадратів. (Парафраза останнього абзацу ст.102 нелінійного програмування , 2-е видання, Дмитро Берцекас.)n g ( x ) = 0nng(x)=0
Це твердження справедливо навіть для розв'язання систем рівнянь з обмеженнями. Я не знаю жодних алгоритмів, які вважаються "рішеннями рівнянь" для випадку, коли є обмеження змінних. Загальний підхід, який я знаю, можливо, пожовклий декількома семестрами курсів з оптимізації та досліджень в лабораторії з оптимізації, полягає у включенні обмежень щодо системи рівнянь у формулу оптимізації. Якби ви намагалися використати обмеження в подібній схемі Ньютона-Рафсона для розв’язання рівнянь, ви, ймовірно, закінчилися проектованим градієнтом або методом прогнозованої області довіри, подібно до методів, що використовуються в обмеженій оптимізації.