为了实现最大似然估计器,我正在寻找一个很好的 C++ 优化库,它可以很好地与 Eigen 的矩阵对象配合使用。Eigen 有一些自己的接口能力,但是如果这里有人有使用 Eigen 和优化器库的经验,那就太好了!
我知道这里或这里有人问过类似的问题,但这些问题是针对无衍生方法的。
我认为一个“好的”库应该可以与其他库(如 Eigen 或 Armadillo)很好地配合使用。到目前为止,我发现dlibnet和nlopt似乎很有希望。
理想情况下,这个问题的答案可能会更长,同时列出每个库的优缺点。太感谢了!
更新:我现在决定使用CppNumericalSolvers。还有Ceres(链接到相关位),但让我感到厌烦的是对非线性最小二乘法的强调,它要求目标函数具有某种格式,对于更复杂的统计模型来说,这并不总是得到保证。即使可以实现某些最大似然估计量的迭代广义最小二乘法也会使这种格式失败。
此外,CppNumericalSolvers 支持绑定到 TensorFlow、Eigen 和 MATLAB。请注意,Ceres 和 CppNumericalSolvers 都要求您将函数公式化为类而不是 lambda 函数,这可能会让一些初学者望而却步。
最后,ROOT是一个 C++ 环境,其中包含大量例程,可以将 C++ 源文件作为“宏”加载。基本的 BFGS 优化器有很多例子,比如这里。然而,这是一个解释环境。
我仍然希望有人可以通过使用图书馆的一些实际经验来回答我的问题。