3

と の 2 つの機能がf(x)ありg(x)ます。これf(x)が最小化する目的関数でg(x)あり、勾配関数です。私の問題は、試行ごとxに、の本体がf(x)複雑な行列を計算することです。A(x)これは、でも使用されg(x)ます。g(x)効率のために、 の計算を繰り返したくありませんA。の本体でA(x)定義してグローバル化を検討しています。したがって、直接使用できます。Rとがどのように繰り返されるのかがわからないため、この戦略が正しく効率的かどうかはわかりません。提案やコメントは大歓迎です。ありがとう。A <<- ...f(x)g(x)A(x)optimf(x)g(x)

4

1 に答える 1

2

optimがどのように呼び出されるかわからないため、必要なときに隠し場所が同じであることを確認する必要がfあります。、、そして を呼び出す場合があります。gA(x)xf(x1)f(x2)f(x3)g(x1)

1つの解決策はメモ化かもしれません:

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

memoisedA(x)は、指定された入力値の戻り値を格納し、同じ入力値が与えられたときに再計算せずにそれを返します。明らかに、非確率関数に対してのみ機能します (乱数ジェネレーターを呼び出さないでください)。

キャッシュのサイズをどのように制御しているかはわかりませんが、ソース コードはすべてそこにあります。

于 2013-07-26T08:51:35.880 に答える