我试图在R中使用DEoptim
优化包来解决持续优化问题,并且由于我的成本函数需要很长时间来评估(2分钟),我试图使用并行计算。我的问题是:
paralleltype=1
(parallel
)和2
(foreach
)选项之间的区别是什么?何时使用其中一个?
是否可以使用paralleltype=1
指定核心数,以便不占用所有可用的核心进行计算(例如,64个核心上有50个核心)?
答案 0 :(得分:1)
广告。 1 - 包文档中对此进行了解释。
广告。 2 - 需要对两个函数进行修改:DEoptim.control和DEoptim
首先,将一个变量 - 比如 limitCores - 添加到DEoptim.control函数中,该函数控制DE优化的执行参数。
其次,对DEOPtim包装函数进行修改,以对limitCores设置的限制进行操作。
if (ctrl$parallelType == 1) {
if (!is.na(ctrl$limitCores)) {
if (ctrl$limitCores<1) useCores <- round(parallel::detectCores()*ctrl$limitCores) else useCores <- ctrl$limitCores
cl <- parallel::makeCluster(parallel::detectCores())
} else {
cl <- parallel::makeCluster(parallel::detectCores())
}
答案 1 :(得分:0)
谢谢您的代码mjaniec!
我知道自您发布以来已经有一段时间了,但是我认为应该在第91行中:
cl <- parallel::makeCluster(useCores)
代替:
cl <- parallel::makeCluster(parallel::detectCores())