Ponieważ cytowano jedną z moich odpowiedzi, postaram się wyjaśnić, dlaczego zasugerowałem użycie IPOPT zamiast MINPACK.
Moje zastrzeżenia do używania MINPACK nie mają nic wspólnego z algorytmami używanymi przez MINPACK i wszystkim, co ma związek z ich implementacją. Moje główne zastrzeżenie polega na tym, że oprogramowanie pochodzi z 1980 r. I zostało ostatnio zaktualizowane w 1999 r. Jorge Moré jest na emeryturze; Wątpię, czy on lub którykolwiek z innych autorów oprogramowania ma to na oku, i nie ma zespołu ludzi aktywnie go wspierających. Jedyną dokumentacją, którą mogę znaleźć na temat oprogramowania, jest oryginalny raport techniczny Argonne z 1980 roku napisany przez Jorge Moré i innych autorów MINPACK. (Rozdziały 1-3 można znaleźć tutaj , a rozdział 4 można znaleźć tutaj.) Po przeszukaniu kodu źródłowego MINPACK i przejrzeniu dokumentacji (pliki PDF to zeskanowane obrazy i nie można ich przeszukiwać), nie widzę żadnych opcji, aby uwzględnić ograniczenia. Ponieważ oryginalny plakat nieliniowego problemu najmniejszych kwadratów chciał rozwiązać ograniczony problem nieliniowego najmniejszego kwadratu, MINPACK nawet nie rozwiąże tego problemu.
Jeśli spojrzysz na listę mailingową IPOPT, niektórzy użytkownicy wskazują, że wydajność pakietu w przypadku problemów z nieliniowymi najmniejszymi kwadratami (NLS) jest mieszana w porównaniu do algorytmów Levenberga-Marquardta i bardziej wyspecjalizowanych algorytmów NLS (patrz tutaj , tutaj i tutaj ). Wydajność IPOPT w stosunku do algorytmów NLS jest oczywiście zależna od problemu. Biorąc pod uwagę opinie użytkowników, IPOPT wydaje się rozsądną rekomendacją w stosunku do algorytmów NLS.
Trzeba jednak przyznać, że należy zbadać algorytmy NLS. Zgadzam się. Po prostu uważam, że należy użyć pakietu nowocześniejszego niż MINPACK, ponieważ uważam, że będzie działał lepiej, będzie bardziej użyteczny i będzie obsługiwany. Ceres wydaje się interesującym pakietem kandydackim, ale nie radzi sobie teraz z ograniczonymi problemami. TAOdziałałby na ograniczonych kwadratach problemach najmniejszych kwadratów, chociaż nie implementuje klasycznego Levenberga-Marquardta, ale zamiast tego implementuje algorytm bez pochodnych. Algorytm bez pochodnych prawdopodobnie działałby dobrze w przypadku problemów na dużą skalę, ale nie używałbym go w przypadku problemów na małą skalę. Nie mogłem znaleźć żadnych innych pakietów, które wzbudziłyby duże zaufanie do ich inżynierii oprogramowania. Na przykład GALAHAD na pierwszy rzut oka nie używa kontroli wersji ani żadnych automatycznych testów. Wydaje się, że MINPACK też tego nie robi. Jeśli masz doświadczenie z MINPACK lub zalecenia dotyczące lepszego oprogramowania, jestem cały w uszach.
Mając to na uwadze, wracając do cytatu mojego komentarza:
Każdy układ równań jest równoznaczny z problemem optymalizacji, dlatego metody optymalizacji oparte na Newtonie przypominają metody rozwiązywania układów równań nieliniowych oparte na Newtonie.
Lepszy komentarz jest prawdopodobnie efektem:
Kiedy chcemy rozwiązać układ równań z niewiadomymi , możemy sformułować to jako problem optymalizacji najmniejszych kwadratów. (Parafraza ostatniego akapitu str. 102 programowania nieliniowego , wydanie drugie, autor: Dmitri Bertsekas.)n g ( x ) = 0nng(x)=0
To stwierdzenie dotyczy nawet rozwiązywania układów równań w ograniczeniach. Nie znam żadnych algorytmów, które są uważane za „rozwiązujące równania” dla przypadku, w którym istnieją ograniczenia dotyczące zmiennych. Powszechnie znanym mi podejściem, być może zlekceważonym przez kilka semestrów kursów optymalizacyjnych i badań w laboratorium optymalizacyjnym, jest włączenie ograniczeń układu równań do sformułowania optymalizacyjnego. Jeśli spróbujesz użyć ograniczeń w schemacie podobnym do Newtona-Raphsona do rozwiązywania równań, prawdopodobnie uzyskasz prognozowany gradient lub metodę prognozowanego regionu zaufania, podobnie jak metody stosowane w ograniczonej optymalizacji.