我正在寻找一个软件包来解决C ++中非常大的稀疏非线性最小二乘问题。我在C ++中遇到了大量的现代linalg库(eigen,armadillo,boost等),但似乎没有一个内置的解算器(甚至是常规的最小二乘解算器)。我真的如果可能的话,比如避免对旧的C / Fortran接口进行一堆杂乱的调用。谢谢!
答案 0 :(得分:0)
我只想使用用C ++编写的通用NLP解算器 IPOPT。它是我尝试过的最强大的求解器,它意味着并成功用于非常大的问题。
如果您使用通用IPOPT,那么需求的变化(例如添加约束)就不会有问题。
解决方案过程中耗时的部分是在每个迭代步骤中解决线性系统,因此值得为您的平台获得最佳线性求解器+ LinAlg包。
不幸的是,IPOPT在内部调用Fortran子程序,所以你需要一个Fortran编译器,这有点痛苦。
如果IPOPT不够,您将不得不寻找特定问题的求解器。
答案 1 :(得分:0)
如果您不需要约束,请试用Ceres或g2o。两者都建立在Eigen之上,可以使用稀疏矩阵求解器,即SuiteSparse和朋友。