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