1

我想并行化一个名为 Progressive Hedging 的优化分解算法。这种优化存储在一个名为 PH 的函数上,该函数接收模型的参数,一些参数是矩阵,但 PH 只需要以这种方式来自该矩阵的向量。

for s = 1:nS
    res = PH(k,s,data,Lines,Ag,Gx,Pmax[:,s],Prmax[:,s],COpe[:,s])
    push!(data,res)
end

所以 PH 只需要一个来自 Pmax、Prmax 和 COpe 的向量。

为了并行化,我尝试这样做。

 pmap(s -> PH(k,s,data,Lines,Ag,Gx,Pmax[:,s],Prmax[:,s],COpe[:,]),1:nS)

但我明白了:

The applicable method may be too new: running in world age 21846, while current world is 21965.

我正在使用 Julia 0.6,也许我的编程方式来自旧版本。

任何想法?

4

1 回答 1

0

我最近pmap()在 0.6 中遇到了类似的问题。尝试将参数分配给具体函数fpmap(f,c...)

createPH(s) = PH(k,s,data,Lines,Ag,Gx,Pmax[:,s],Prmax[:,s],COpe[:,])
pmap(createPH,1:nS)

这为我解决了这个问题。(另请注意,在 0.6.0 中会生成警告,而不是world age错误)

于 2017-11-15T20:27:31.270 回答