2010-09-21 124 views
9

This question來的時機正好,我也在爲優化而苦苦掙扎。我知道R中不同的「正常」優化例程,並且我知道像雪,降雪,Rmpi和類似的並行軟件包。然而,我並沒有設法在我的電腦上並行運行優化。並行優化R

一些玩具代碼來說明:

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

我想要做什麼,是並行化的Optim()函數(或NLM()函數,該函數基本上是相同的)。我的真實函數f()要複雜得多,一次優化過程大概持續半個小時。如果我想運行100個樣本的模擬,那需要很長時間。我想,以避免寫我的並行計算自己的Newton型算法,所以我希望有人可以給我


我認爲這如何R.使用並行計算的複雜優化問題的一些提示問題與相關問題的性質不同。我的要求專門針對並行計算,而不是一些更快的替代方案。

+1

如果你的函數更加複雜,你可以並行而不是'optim'嗎? – 2010-09-21 12:06:54

+0

@Joshua:thx,確實有一些並行化的可能。然而,我也想用一些羣優化方法來進行優化,因爲我必須將模型的速度提高至少10倍才能使模型在模擬中可行。 – 2010-09-21 12:10:33

回答

3

要回答我的問題:

有一個在開發一個包,看起來很有希望。它具有粒子羣優化方法並基於Rmpi包進行並行計算。它可以在Rforge發現:

http://www.rforge.net/ppso/index.html

它仍處於測試階段據我所知,但它看起來很有希望。稍後我會看看它,當我知道更多時,我會報告回來。不過,我把問題留給公開,所以如果其他人有另一種選擇...

+0

如果你正在考慮PSO,你有沒有想過差異化進化(通過DEoptim包)?並行計算支持位於軟件包的待辦事項列表中,不應超過幾個小時的工作時間(對我而言,不是你:-)。 – 2010-09-21 14:58:23

+0

@Joshua Thx對於提示,我還不知道DEoptim。它看起來很有前途,但對於我現在正在處理的問題,它實際上比nlm()慢很多。我有13個參數,沒有明確的下限和上限,所以我必須將它們設置得相當大,以避免缺少參數... – 2010-09-21 15:12:11

+0

試過了測試版,它似乎工作。在我的問題上,它並沒有提供與並行化函數本身相同的改進。但是,我可以看到,在其他情況下,這真的是一個有用的工具。我期待着第一次穩定版本。 – 2010-09-25 18:39:49

0

Sprint可能是有趣的。我對此一無所知,但最近偶然發現了它。

+0

Thx爲指針,但我已經知道了。 R中有多個並行計算框架,具體取決於您要使用的協議。然而,我找不到使用並行計算能力的非 - 優化功能。 – 2010-09-21 14:38:50