优化R的梯度函数

时间:2013-07-26 06:42:45

标签: r optimization

我有两个函数f(x)g(x)。这里f(x)是最小化的目标函数,g(x)是梯度函数。我的问题是针对每个审核xf(x)的正文将计算一个复杂的矩阵A(x),它也会在g(x)中使用。为了提高效率,我不希望g(x)重复计算A。我正在考虑通过在A(x)的正文中定义A <<- ...来使f(x)全球化。因此g(x)可以直接使用A(x)。因为我不知道R中的optim如何迭代f(x)g(x),我不确定这种策略是否正确有效。欢迎任何建议和意见。感谢。

1 个答案:

答案 0 :(得分:1)

因为您不知道optim将如何调用fg,所以您必须确保任何被隐藏的A(x)来自同一地点x f(x1)当你需要它时。它可能会调用f(x2)f(x3)g(x1),然后调用A(x)

一种解决方案可能是备忘录:

http://cran.r-project.org/web/packages/memoise/index.html

记忆{{1}}将存储给定输入值的返回值,并在给定相同输入值时返回该值而不重新计算。显然只适用于非随机函数(不要调用任何随机数生成器)。

我不确定你如何控制缓存的大小,但源代码就在那里。