我想对一个名为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,也许我编程的方式来自旧版本。
有什么想法吗?
答案 0 :(得分:0)
我最近在0.6中遇到过pmap()
的类似问题。尝试将f
中的参数pmap(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
错误)