R中的优化函数可以接受客观,梯度和粗麻布?

时间:2011-11-11 02:31:46

标签: r packages mathematical-optimization

我有一个复杂的目标函数,我希望优化。优化问题需要相当长的时间来优化。幸运的是,我确实有渐变和函数的粗糙度。

R中是否有可以采用所有这三种输入的优化包? “optim”这个类不接受Hessian。我已经扫描了CRAN task page for optimization并没有弹出任何内容。

对于它的价值,我能够使用带有'GradObj'和'Hessian'参数的'fminunc'在MATLAB中进行优化。

2 个答案:

答案 0 :(得分:10)

我认为信任区域优化的软件包trust可以解决问题。从trust的文档中,您可以看到

  

此功能执行功能的最小化或最大化   使用信任区域算法...(它接受)一个R函数   计算要最小化的函数的值,梯度和Hessian   或最大化并将它们作为具有组件值的列表返回,   渐变和粗麻布。

事实上,我认为它使用fminunc使用的相同算法。

  

默认情况下,fminunc会选择大规模算法   有趣的渐变,并使用optimset将GradObj设置为'on'。这个算法   是一个子空间信任区域方法,并以此为基础   [2]和[3]中描述的内反射牛顿法。每   迭代涉及大型线性系统的近似解   使用预处理共轭梯度(PCG)的方法。看到   大规模fminunc算法,非线性系统的信赖域方法   最小化和预处理共轭梯度法。

答案 1 :(得分:0)

stats::nlm()stats::nlminb()都需要分析渐变和hessians。但请注意,前者(nlm())当前为does not update the analytical gradient correctly,但这是在当前开发版本的R中修复的(自R-devel,svn rev 72555)。