我正在寻找一个用C语言编写的库,它可以对目标函数进行优化(最好是Levenberg-Marquardt算法),并支持盒子约束、线性不等式约束和非线性不等式约束。
我已经尝试了几个库,但它们都没有为我的应用程序使用必要的约束类型:
我目前正在探索NLopt,但我不确定是否可以使用所提供的任何算法实现最小二乘方法。
我发现很难相信没有一个库支持这个问题中的所有约束,所以我猜我在谷歌搜索的时候犯了一个错误。
我最近发现我可以从C中调用Matlab函数,虽然这可以很容易地解决问题,但我不想从C中调用Matlab函数,这在我的经验中并不快。
任何帮助都将不胜感激。
发布于 2011-06-22 19:01:31
我最终遵循的方法如下:
简单的基准测试表明,它的收敛速度确实比Lev-Mar方法慢一点,但由于需要约束,速度被牺牲了。
发布于 2011-06-20 06:57:33
前段时间,我在研究C/C++最小二乘拟合库的状态。我记下了一些链接,包括你给出的链接,还有:
我还没有使用过任何一个库,但是NLopt对我来说似乎是最有前途的。如果它有专门的接口和(加权)最小二乘拟合算法,那就太好了。
顺便说一句,你关于Matlab的注释是否意味着它具有带有非线性约束的Lev-Mar?
发布于 2012-03-29 20:00:19
MPFIT:一个C语言的MINPACK-1最小二乘拟合库
MPFIT使用Levenberg-Marquardt技术来解决最小二乘问题。在其典型应用中,MPFIT将用于通过调整一组参数将用户提供的函数(“模型”)拟合到用户提供的数据点(“数据”)。MPFIT基于More‘和合作者的MINPACK-1 (LMDIF.F)。
https://stackoverflow.com/questions/6403282
复制相似问题