2011-11-15 85 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