2011-08-17 33 views
1

我正在寻找一个C++优化软件包,可以使用梯度和Hessian信息进行多变量无约束优化。我现在在Matlab中使用fminunc和'GradObj','Hessian'和'HessPattern'选项。我的黑森州非常稀少,所以考虑到这一点的软件包会更可取。使用梯度和(稀疏)Hessian的无约束优化

这是否有任何替代Matlab的?开源或封闭源都很好。 C++是可取的,但我很灵活。

+1

这会在StackOverflow上获得更多关注吗?你想要做什么样的优化? “无约束多变量”并没有把它缩小得太多 - 你的意思是它适用于任何两次可微函数吗?我问的原因是有些优化器可能对某些类型的问题更好,尤其是在可以利用稀疏性的情况下。 – Iterator

+0

这基本上是一个基于摄影测量的束调整问题。有数百个变量需要优化,但大多数变量只与少量其他变量相互作用,导致稀疏的Hessian矩阵。 – eglaser

回答

0

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

+0

这就是我现在正在做的事情,但是MATLAB是一个相当大的依赖项,我一直在寻找替代品。 – eglaser

0

你可以抛弃Hessian并使用BFGS方法,如libLBFGS。这些准牛顿方法通常很不错。

+0

这可能是一个不错的选择。我将不得不看看性能是否受损。 – eglaser

0

据我所知,你需要的是一个高效的线性代数库。考虑一下,例如,uBLAS

0

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