我有两个功能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)
,所以我不确定这个策略是否正确有效。欢迎任何建议和意见。谢谢。
问问题
601 次
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 回答