【问题标题】:Unconstrained Optimization using Gradient and (sparse) Hessian使用梯度和(稀疏)Hessian 进行无约束优化
【发布时间】:2015-01-26 05:57:44
【问题描述】:

我正在寻找可以使用梯度和 Hessian 信息进行多元无约束优化的 C++ 优化包。我现在在 Matlab 中使用带有“GradObj”、“Hessian”和“HessPattern”选项的 fminunc 进行操作。我的 Hessian 非常稀疏,因此考虑到这一点的包会更可取。

Matlab 有什么替代品吗?开源或闭源都可以。 C++ 更可取,但我很灵活。

【问题讨论】:

  • 这会在 StackOverflow 上得到更多关注吗?您希望进行什么样的优化? “无约束多元”并没有把它缩小很多 - 你的意思是它适用于任何两次可微函数?我问的原因是某些优化器可能更适合某些类别的问题,尤其是在可以利用稀疏性的情况下。
  • 这基本上是一个基于摄影测量的束平差问题。有数百个变量需要优化,但大多数变量只与少量其他变量相互作用,导致稀疏的 Hessian 矩阵。

标签: optimization c++


【解决方案1】:

您是否考虑过将 MATLAB 库编译为 R 可以引用的 .dll 或 .exe? MATLAB 有这个能力。

【讨论】:

  • 这就是我目前正在做的事情,但是 MATLAB 是一个很大的依赖项,我一直在寻找替代品。
【解决方案2】:

您可以放弃 Hessian 并使用 BFGS 方法,例如 libLBFGS。这些拟牛顿法通常都很好。

【讨论】:

  • 这可能是一个不错的选择。我得看看性能是否会受到影响。
【解决方案3】:

据我了解,您需要的是一个高效的线性代数库。例如,考虑uBLAS

【讨论】:

    【解决方案4】:

    我最近在 R 中遇到了 trustOptim 包。它在 Hessian 稀疏的情况下很有用。据我所知,该包的核心是用 C++ 编写的,并使用 Rcpp 与 R 接口。它也是开源的。

    【讨论】:

      猜你喜欢
      • 2015-06-09
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多