gpt4 book ai didi

r - 如何并行运行 DEoptim?

转载 作者:行者123 更新时间:2023-12-05 04:15:43 24 4
gpt4 key购买 nike

在R中开发了一个水文模型,函数中有8个参数,我想用DEoptim来校准模型。由于运行每个函数所需的时间长度,我想并行化 DEoptim 函数,因为它可以选择并行运行。文档建议按如下方式设置:

DEctrl <- DEoptim.control(trace=TRUE,parallelType=1,packages=c(),parVar=c())
ans <- DEoptim(Calibrate,lower,upper,DEctrl)

如果我在没有并行化的情况下运行 DEoptim 那么它工作正常,但是如果我将 parallelType 设置为 1 它会失败并出现以下错误:

Error in checkForRemoteErrors(val) : 
8 nodes produced errors; first error: could not find function "startyear"

我想这是因为我没有在 DEoptim.control 中设置 parVarpackages 但我真的不明白它们是什么要求。我想 packages 是我预先加载的库模块,但不确定 parVar 是什么。文档说 parVar 是一个变量名称列表(作为字符串),这些名称需要存在于环境中以供目标函数使用或用作目标函数的参数。

我的代码有 1500 行长,所以我不确定应该包括哪些变量名。该代码是一系列子函数 - 这是其中的一部分:

library(DEoptim)
library(package = "hydromad")
library(maptools)
library(compiler)
#enableJIT(3)
library(tcltk)
library(raster)

Calibrate <- function(x) {
cmax <<- x[1]
Cr <<- x[2]
Cl <<- x[3]
Crb <<- x[4]
Clb <<- x[5]
returnflowriver <<- x[6]
returnflowland <<- x[7]
kd <<- x[8]
startyear()
-RSquaredboxcox
}

initialisemodel <- function() {
S1 <<- Sys.time()
# 1 Yangtze watershed inputs
# Load librarys
Starttime <- Sys.time()

Catchmentnum <- 1
# Set global parameters
Plothourlyrunoffswitch <- 0

cmin <<- 0.01
tempmelt <<- 1.5
tempsnow <<- 0.0
temprain <<- 1.5
DDFSnow <<- 4.1
DDFIce <<- 7.1

shiftcell <<- Resolution/3600

projstring <<- "+proj=longlat +datum=WGS84 +no_defs"

等等。

所以我的问题是,我应该在 parVarpackages 中包含什么?

最佳答案

正如您在问题中提到的,您需要使用 parVarpackages

packages 向量应该列出您使用的所有包,例如您使用在另一个包中找到的随机数生成器。

parVar 向量应该包含在您的代码调用的函数或变量中。所以在你的情况下,

parVar = "startyear"

我强烈怀疑,这会引发另一个关于另一个缺失变量的错误(您应该将其添加到 parVar 并重复该过程)。

关于r - 如何并行运行 DEoptim?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30867402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com