3

我有两个功能f(x)g(x). 这里f(x)是最小化的目标函数,g(x)是梯度函数。我的问题是对于每次试验x, 的主体f(x)将计算一个复杂的矩阵A(x),该矩阵也将用于g(x). 为了效率,我不想g(x)重复计算A. 我正在考虑A(x)通过A <<- ...f(x). 所以g(x)可以A(x)直接使用。因为我不知道optim在 R 中如何迭代f(x)and g(x),所以我不确定这个策略是否正确有效。欢迎任何建议和意见。谢谢。

4

1 回答 1

2

因为您不知道optim将如何调用f,并且g您将必须确保在需要时任何隐藏的东西A(x)都是来自相同的x。它可能会调用f(x1), f(x2),f(x3)然后g(x1)

一种解决方案可能是记忆:

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

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

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

于 2013-07-26T08:51:35.880 回答