Puisqu'une de mes réponses a été citée, je vais essayer de clarifier pourquoi j'ai suggéré d'utiliser IPOPT au lieu de MINPACK.
Mes objections à l'utilisation de MINPACK n'ont rien à voir avec les algorithmes que MINPACK utilise et tout à voir avec leur implémentation. Ma principale objection est que le logiciel remonte à 1980 et a été mis à jour pour la dernière fois en 1999. Jorge Moré est à la retraite; Je doute que lui ou l'un des autres auteurs du logiciel garde un œil dessus, et il n'y a pas d'équipe de personnes qui le soutiennent activement. La seule documentation que je peux trouver sur le logiciel est le rapport technique original d'Argonne de 1980 écrit par Jorge Moré et les autres auteurs de MINPACK. (Les chapitres 1-3 peuvent être trouvés ici , et le chapitre 4 peut être trouvé ici.) Après avoir recherché le code source de MINPACK et parcouru la documentation (les fichiers PDF sont des images numérisées et ne peuvent pas être recherchés), je ne vois aucune option pour s'adapter aux contraintes. Puisque l'affiche originale du problème des moindres carrés non linéaires voulait résoudre un problème des moindres carrés non linéaires contraint, MINPACK ne résoudra même pas ce problème.
Si vous regardez la liste de diffusion IPOPT, certains utilisateurs indiquent que les performances du package sur les problèmes des moindres carrés non linéaires (NLS) sont mitigées par rapport aux algorithmes de Levenberg-Marquardt et aux algorithmes NLS plus spécialisés (voir ici , ici et ici ). Les performances d'IPOPT par rapport aux algorithmes NLS dépendent bien sûr du problème. Étant donné les commentaires des utilisateurs, IPOPT semble être une recommandation raisonnable par rapport aux algorithmes NLS.
Cependant, vous faites valoir que les algorithmes NLS doivent être étudiés. Je suis d'accord. Je pense simplement qu'un package plus moderne que MINPACK devrait être utilisé car je pense qu'il fonctionnera mieux, sera plus utilisable et sera pris en charge. Ceres semble être un package candidat intéressant, mais il ne peut pas gérer les problèmes contraints pour le moment. TAOfonctionnerait sur les problèmes de moindres carrés contraints par des boîtes, bien qu'il n'implémente pas le Levenberg-Marquardt classique, mais implémente à la place un algorithme sans dérivé. Un algorithme sans dérivé fonctionnerait probablement bien pour des problèmes à grande échelle, mais je ne l'utiliserais pas pour des problèmes à petite échelle. Je n'ai trouvé aucun autre package qui ait inspiré une grande confiance dans leur génie logiciel. Par exemple, GALAHAD ne semble pas utiliser le contrôle de version ou tout test automatisé, à première vue. MINPACK ne semble pas faire ces choses non plus. Si vous avez de l'expérience avec MINPACK ou des recommandations concernant un meilleur logiciel, je suis à l'écoute.
Avec tout cela à l'esprit, revenons à la citation de mon commentaire:
Tout système d'équations équivaut à un problème d'optimisation, c'est pourquoi les méthodes basées sur Newton en optimisation ressemblent beaucoup aux méthodes basées sur Newton pour résoudre des systèmes d'équations non linéaires.
Un meilleur commentaire est probablement quelque chose à l'effet de:
nng( x ) = 0
Cette affirmation est valable même pour la résolution de systèmes d'équations sous contraintes. Je ne connais aucun algorithme considéré comme "résolveur d'équations" dans le cas où il y a des contraintes sur les variables. L'approche commune que je connais, peut-être jaunie par plusieurs semestres de cours d'optimisation et de recherche dans un laboratoire d'optimisation, est d'incorporer les contraintes sur le système d'équations dans une formulation d'optimisation. Si vous deviez essayer d'utiliser les contraintes dans un schéma de type Newton-Raphson pour la résolution d'équations, vous vous retrouveriez probablement avec un gradient projeté ou une méthode de région de confiance projetée, un peu comme les méthodes utilisées dans l'optimisation contrainte.