C ++中稀疏的非负最小二乘

时间:2012-10-04 18:29:19

标签: c++ math matrix sparse-matrix

我正在寻找一个软件包来解决C ++中非常大的稀疏非线性最小二乘问题。我在C ++中遇到了大量的现代linalg库(eigen,armadillo,boost等),但似乎没有一个内置的解算器(甚至是常规的最小二乘解算器)。我真的如果可能的话,比如避免对旧的C / Fortran接口进行一堆杂乱的调用。谢谢!

2 个答案:

答案 0 :(得分:0)

我只想使用用C ++编写的通用NLP解算器 IPOPT。它是我尝试过的最强大的求解器,它意味着并成功用于非常大的问题。

如果您使用通用IPOPT,那么需求的变化(例如添加约束)就不会有问题。

解决方案过程中耗时的部分是在每个迭代步骤中解决线性系统,因此值得为您的平台获得最佳线性求解器+ LinAlg包。

不幸的是,IPOPT在内部调用Fortran子程序,所以你需要一个Fortran编译器,这有点痛苦。

如果IPOPT不够,您将不得不寻找特定问题的求解器。

答案 1 :(得分:0)

如果您不需要约束,请试用Ceresg2o。两者都建立在Eigen之上,可以使用稀疏矩阵求解器,即SuiteSparse和朋友。