Optimization R中的并行优化

Optimization R中的并行优化,optimization,r,parallel-processing,Optimization,R,Parallel Processing,来得正是时候,因为我也在努力优化。我知道R中不同的“正常”优化例程,我也知道类似snow、snowfall、Rmpi之类的并行包。然而,我没有设法在我的计算机上并行运行优化 一些玩具代码来说明: f <- function(x) sum((x-1:length(x))^2) a <- 1:5 optim(a,f) nlm(f,a) f可能会引起兴趣。我对它一无所知,但最近偶然发现了它。回答我自己的问题: 有一个方案正在开发中,看起来很有希望。它有粒子群优化方法,并建立在并行计算的R

来得正是时候,因为我也在努力优化。我知道R中不同的“正常”优化例程,我也知道类似snow、snowfall、Rmpi之类的并行包。然而,我没有设法在我的计算机上并行运行优化

一些玩具代码来说明:

f <- function(x) sum((x-1:length(x))^2)
a <- 1:5
optim(a,f)
nlm(f,a)

f可能会引起兴趣。我对它一无所知,但最近偶然发现了它。

回答我自己的问题:

有一个方案正在开发中,看起来很有希望。它有粒子群优化方法,并建立在并行计算的Rmpi包上。可在Rforge上找到:

它还在测试阶段,但看起来很有希望。我稍后会看一看,等我知道更多情况后再汇报。尽管如此,我还是保留了这个问题,因此如果其他人有其他选择…

R包optimParallel可能对您的情况有所帮助。该软件包提供了基于梯度的优化方法的并行版本
optim()
。这个包的主要功能是
optimParallel()
,它的用法和输出与
optim()
相同。使用
optimParallel()
可以显著减少优化时间,如下图所示(
p
是参数的数量)。
有关更多信息,请参阅和

如果你的函数要复杂得多,你能把它并行化而不是
optim
?@Joshua:thx,确实有一点并行化的可能性。然而,我也想使用一些群体优化方法,因为我必须将速度提高至少十倍,才能使模型在模拟中可行。Thx是指针,但我已经知道了。在R中有更多的并行计算框架,这取决于您想要使用的协议。然而,我找不到一个使用并行计算能力的非beta优化函数。如果你在考虑PSO,你有没有想过差分进化(通过DEoptim包)?并行计算支持在软件包的待办事项列表中,不应该花费超过几个小时的工作(对我来说,不是你:-)。@Joshua Thx提示,我还不知道DEoptim。它看起来很有希望,但对于我现在正在处理的问题,它实际上比nlm()慢得多。我有13个参数,没有明确的下限和上限,所以我必须将它们设置得相当大,以避免遗漏一个参数…试用了beta版,它似乎可以工作。在我的问题上,它仍然没有提供与函数本身并行化相同的改进。然而,我可以看到,在其他情况下,这确实是一个有用的工具。我期待着第一个稳定的版本。