由于已引用了我的答案之一,因此我将尝试阐明为什么建议使用IPOPT而不是MINPACK。
我对使用MINPACK的反对意见与MINPACK所使用的算法无关,并且与它们的实现无关。我的主要反对意见是该软件的历史可以追溯到1980年,并于1999年进行了最后一次更新。我怀疑他或该软件的任何其他作者都不会继续关注该软件,并且没有人积极支持该软件。我可以在该软件上找到的唯一文档是JorgeMoré和其他MINPACK作者撰写的原始的1980 Argonne技术报告。(第1-3章可在此处找到,第4章可在此处找到。)搜索MINPACK源代码并仔细阅读文档(PDF是扫描的图像,无法搜索)之后,我看不到任何可满足约束的选项。由于非线性最小二乘问题的原始发布者想解决一个受约束的非线性最小二乘问题,因此MINPACK甚至无法解决该问题。
如果您查看IPOPT邮件列表,一些用户指出相对于Levenberg-Marquardt算法和更专业的NLS算法(参见此处,此处和此处),该软件包在非线性最小二乘(NLS)问题上的性能是混合的。相对于NLS算法,IPOPT的性能当然取决于问题。考虑到用户的反馈,相对于NLS算法,IPOPT似乎是一个合理的建议。
但是,您指出应该研究NLS算法。我同意。我只是认为应该使用比MINPACK更现代的软件包,因为我相信它会更好地执行,更易使用并得到支持。谷神星似乎是一个有趣的候选程序包,但它现在无法处理受约束的问题。陶尽管它没有实现经典的Levenberg-Marquardt,而是实现了无导数算法,但可以解决框约束的最小二乘问题。无导数算法可能会很好地解决大规模问题,但我不会将其用于小规模问题。我找不到其他激发他们对其软件工程充满信心的软件包。例如,乍看之下,GALAHAD似乎并没有使用版本控制或任何自动化测试。MINPACK似乎也不做这些事情。如果您有使用MINPACK的经验或有关更好软件的建议,我将不胜枚举。
考虑到所有这些,请回到我的评论引文:
任何方程组都等于一个优化问题,这就是为什么在优化中基于牛顿的方法看起来很类似于求解非线性方程组的基于牛顿的方法。
更好的评论可能会带来以下效果:
nng(x)=0
该陈述甚至适用于在约束条件下求解方程组。对于变量存在约束的情况,我不知道任何被认为是“方程求解器”的算法。我所知道的常见方法,可能是将几个学期的优化课程和在优化实验室中进行的研究弄得一团糟,是将方程组的约束条件合并到一个优化公式中。如果要尝试在类似Newton-Raphson的方案中使用约束条件进行方程求解,则最终可能会遇到投影梯度或投影信任区域方法,这与约束优化中使用的方法非常相似。