我有一个复杂的目标函数,我希望优化。优化问题需要相当长的时间来优化。幸运的是,我确实有渐变和函数的粗糙度。
R中是否有可以采用所有这三种输入的优化包? “optim”这个类不接受Hessian。我已经扫描了CRAN task page for optimization并没有弹出任何内容。
对于它的价值,我能够使用带有'GradObj'和'Hessian'参数的'fminunc'在MATLAB中进行优化。
答案 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)。