2011-11-15 20 views
2

次のコードは、Rのアクセス違反を引き起こします(RGuiを使用)。 RStudioを使用すると、DEOptim.dllを引用してRStudioがクラッシュします。私はDEoptim 2.1-1を使用しています。下位/上位の長さを減らすと、すべてうまく動作します。このドキュメントでは、2.0-3の時点で、最適化するパラメータの数の制限が解除されていることを示しています(DEoptimのCコードへの変換では)。これはバグですか、何か不足していますか?進める方法のアドバイス?DEOptimアクセス違反/クラッシュ

library(DEoptim) 
objFunc = function(x) 
{ 
    return(mean(x)) 
} 
lower = rep(-.1 , 400) 
upper = rep(.1 , 400) 
result = DEoptim(objFunc , lower = lower , upper = upper) 

Traceback: 
1: .Call("DEoptimC", lower, upper, fn, ctrl, new.env(), PACKAGE = "DEoptim") 
2: DEoptim(objFunc, lower = lower, upper = upper) 
Error in DEoptim(objFunc, lower = lower, upper = upper) : 
    caught access violation - continue with care 
+3

私はパッケージメンテナーに連絡します。クラッシュは定義上のバグです。 –

+2

RStudioを使用しない場合は動作しますか? RStudioをクラッシュさせるコードがRStudioのバグである可能性はありますか?それと同様に、それはWindowsのバグかもしれませんが、おそらくRStudioかパッケージです。 –

+0

こんにちは - それは、クラッシュなしで、Rのアクセス違反を引き起こします。 RStudioを使用している場合は、クラッシュします。どちらの場合でも何か悪いことが起きます。私はそれをより明確にするために投稿を更新しました。 – SFun28

答えて

4

ベン・ボルカー氏によると、クラッシュはバグです。再現性の少ない例をありがとうございます。私は今日これを解決します。

更新:R-forge、改訂73にパッチを当てました。数日後にCRANにプッシュします。

+0

私は解決策がイニシャルポップに修正されているのを見ました。パラメータの数にはまだ限界がありますか?私の例では400を使用しますが、実際には550-600を使用したいと思います。それは可能でしょうか? – SFun28

+0

@ SFun28:最初の人口がスタック上に作成されていて、人口のサイズがスタックオーバーフローを引き起こしていました。代わりにヒープを使用するようにコードを移動したので、コンピュータのメモリ制限にぶつかると問題にぶつかります。たとえば、私は1000個の要素を持つ 'lower'と' upper'であなたのサンプルを実行することができました。 –

+0

それは素晴らしいです!ありがとう。 – SFun28

関連する問題