R:DEoptim并行优化 - 核心数量

时间:2015-07-03 11:07:12

标签: r optimization parallel-processing continuous

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

  1. paralleltype=1parallel)和2foreach)选项之间的区别是什么?何时使用其中一个?

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

    < / LI>

2 个答案:

答案 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())

    }

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

答案 1 :(得分:0)

谢谢您的代码mjaniec!

我知道自您发布以来已经有一段时间了,但是我认为应该在第91行中:

cl <- parallel::makeCluster(useCores)

代替:

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