繁体   English   中英

R:DEoptim 并行优化 - 核心数

[英]R: DEoptim parallel optimization - number of cores

我正在尝试在 R 中使用DEoptim优化包来解决连续优化问题,并且由于我的成本函数需要很长时间来评估(2 分钟),我正在尝试使用并行计算。 我的问题是:

  1. paralleltype=1 ( parallel ) 和2 ( foreach ) 选项有什么区别? 何时使用两者之一?

  2. 是否可以使用paralleltype=1指定内核数,以便不使用所有可用内核进行计算(例如,64 个内核中有 50 个内核可用)?

广告。 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())

    }

完整代码: http : //pastebin.com/NumDx4ae

感谢您的代码 mjaniec!

我知道你发布它已经有一段时间了,但我认为在第 91 行应该是:

cl <- parallel::makeCluster(useCores)

代替:

cl <- parallel::makeCluster(parallel::detectCores())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM