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

Hi Xu - 충돌이 발생하지 않고 R에서 액세스 위반이 발생합니다. RStudio를 사용하면 충돌이 발생합니다. 그래서 어느 경우 에나 나쁜 것이 발생합니다. 더 명확하게하기 위해 게시물을 업데이트했습니다. – SFun28

답변

4

벤 볼커 (Ben Bolker)가 말했듯이 충돌은 버그입니다. 재현 가능한 최소한의 예제를 가져 주셔서 감사합니다. 나는 오늘 이것을 고칠 것이다.

업데이트 : R-forge, 개정 73에 패치 됨. 며칠 후에 CRAN으로 푸시됩니다.

+0

나는 그 해결책이 이니셜 팝 (initialpop)에 대한 해결책이라는 것을 알았다. 매개 변수 수에 제한이 있습니까? 내 예제에서는 400을 사용하지만 실제로는 550-600을 사용하고 싶습니다. 그게 가능할까요? – SFun28

+0

@ SFun28 : 스택에 초기 채우기가 만들어지고 인구의 크기가 스택 오버플로를 일으키고있었습니다. 대신 힙을 사용하도록 코드를 이동 했으므로 컴퓨터의 메모리 제한에 부딪치게되면 문제가 발생합니다. 예를 들어, 1,000 개의 요소가있는 'lower'와 'upper'를 사용하여 예제를 실행할 수있었습니다. –

+0

환상적입니다! 감사. – SFun28