我正在尝试以DEoptim下列方式在 R 中使用
fit <- DEoptim(fn = .obj, lower=lower, upper = upper,
control = list(itermax = 100, trace = 1, parallelType = 1,
steptol = 25, reltol = 1e-9, strategy = 6))
Run Code Online (Sandbox Code Playgroud)
但是,DEoptim在并行设置中使用不会在多次运行中重现结果。使用parallelType = 0. 我尝试在集群中设置种子clusterSetRNGStream以及在代码中使用,set.seed但这也无济于事。
有没有人在尝试DEoptim并行运行时遇到过类似的问题。下面是sessionInfo
sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252 …Run Code Online (Sandbox Code Playgroud) 我用 C++ 编写了一个模拟程序,并且喜欢使用 DEoptim 在 R 中查找参数。有时一切都运行良好,有时 DEoptim 会停下来并告诉我们:
Error in DEoptim(simulate, lower = lb, upper = ub, control = opt) :
NaN value of objective function!
Perhaps adjust the bounds.
Run Code Online (Sandbox Code Playgroud)
我的 R 脚本定义了一个调用外部二进制文件的函数。参数附加到命令中。我测试了我的 C++ 程序,但从未见过 NaN 返回。此外,为了进行调查,我检查 R 函数中是否存在 NaN simulate(),这样它就会停止并告知实际上存在一个 NaN 值。然而,它永远不会停在那里 - 但后来在 DEoptim 中。问题是什么?这是一个 DEoptim-Bug 吗?
library("DEoptim")
setwd("some-path")
simulate <- function(theta)
{
strcom <- paste(c("./ExternalBinary", theta),collapse=" ")
ret <- as.numeric(system(strcom, intern=T)) #will return a couple of integer numbers
ret <- mean(ret) #average those numbers
if(any(is.nan(ret))){ …Run Code Online (Sandbox Code Playgroud)