3

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

4

2 回答 2

0

我会简单地使用用 C++ 编写的通用 NLP 求解器 IPOPT 。它是我尝试过的最强大的求解器,它可以成功地用于解决非常大的问题。

如果您使用通用IPOPT,需求的变化(例如添加约束)将没有问题。

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

不幸的是,IPOPT 在内部调用 Fortran 子例程,因此您将需要一个有点痛苦的 Fortran 编译器。

如果 IPOPT 还不够,您将不得不寻找特定问题的解决者。

于 2012-10-04T18:55:01.827 回答
0

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

于 2014-01-21T03:11:27.753 回答