2011-11-15 59 views
2

以下代码导致R中的访问冲突(使用RGui)。如果我使用RStudio,则RStudio会引用DEOptim.dll引起的崩溃。我正在使用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

我会联系包维护者。根据定义,崩溃是一个错误。当你不使用RStudio时, –

+2

能工作吗?有可能导致RStudio崩溃的代码可能是一个RStudio错误,不是吗?或者,类似的,它可能是一个Windows错误,但它可能是RStudio或软件包。 –

+0

Hi Xu - 它在R中导致访问冲突,没有崩溃。如果我使用RStudio,那么我会崩溃。所以无论哪种情况都会发生不好的事我更新了这篇文章,使其更加清晰。 – SFun28

回答

4

正如本博尔克所说,崩溃是一个错误。感谢您的最小重现性示例。我今天会解决这个问题。

更新:修补R-forge,修订版73.几天后将推到CRAN。

+0

我看到解决方案是对initialpop的修复。参数数量是否有限制?我的例子使用400,但实际上我想使用550-600。这可能吗? – SFun28

+0

@ SFun28:最初的人口正在堆栈上创建,并且您的人口规模导致堆栈溢出。我移动了代码来使用堆,所以如果遇到计算机的内存限制,只会遇到问题。例如,我可以用'lower'和'upper'运行你的例子,每个元素有1,000个元素。 –

+0

这太棒了!谢谢。 – SFun28