Jor*_*eys 11 parallel-processing optimization r
这个问题恰逢其时,因为我也在努力优化.我知道R中不同的"正常"优化程序,我知道像雪,降雪,Rmpi等喜欢的并行包.然而,我没有设法在我的计算机上并行运行优化.
一些玩具代码说明:
f <- function(x) sum((x-1:length(x))^2)
a <- 1:5
optim(a,f)
nlm(f,a)
Run Code Online (Sandbox Code Playgroud)
我想要做的是并行化optim()函数(或nlm()函数,它基本相同).我的真实函数f()要复杂得多,一个优化循环持续大约半小时.如果我想运行100个样本的模拟,那个需要很长时间.我想避免为并行计算编写自己的牛顿算法,所以我希望有人能给我一些关于如何在R中使用并行计算来解决复杂优化问题的提示.
我认为这个问题与相关问题的问题不同.我的请求专门针对并行计算,而非一些更快的替代优化.
R 包optimParallel可能对您的情况有所帮助。该包提供了基于梯度的优化方法的并行版本optim()。该包的主要功能是optimParallel(),其用法和输出与 相同optim()。使用optimParallel()可以显着减少优化时间,如下图所示(p是参数数量)。
有关更多信息,
请参阅https://cran.r-project.org/package=optimParallel和http://arxiv.org/abs/1804.11058 。
回答我自己的问题:
有一个正在开发中的软件包看起来很有前途。它具有粒子群优化方法,并基于 Rmpi 包构建,用于并行计算。可以在 Rforge 上找到:
http://www.rforge.net/ppso/index.html
据我所知,它仍处于测试阶段,但看起来很有希望。稍后我会看一下,当我了解更多情况时会报告。不过,我仍然保留这个问题,所以如果其他人有其他选择......