2017-10-14 10 views
1

私は、Progressive Hedgingという名前の最適化の分解アルゴリズムをparalelizeしたいと思っています。この最適化は、モデルの引数を受け取るPHという名前の関数に格納され、いくつかの引数は行列ですが、PHはこのようにしてその行列からのベクトルだけを必要とします。Julia 0.6 pmap function

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からのベクトルを必要とします。

パラレル化するには、これを実行してください。私はジュリア0.6を使用してい

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

たぶん私はプログラミングだ道は、旧バージョンからです:

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

は、しかし、私はこれを取得します。

+0

次を参照してください。https://docs.julialang.org/en/stable/manual/methods/#Redefining-Methods- 1 – Liso

+0

問題を再現するのに十分なコードがありませんでした。世界時代の問題は、evalを使って関数を定義することによるものです。私はあなたが 'PH'でこれをしているに違いないと思っていますが、' PH'をどのように定義したのか分かりません。 –

答えて

0

私は最近0.6でpmap()と同様の問題がありました。これは私のために問題を修正し、すなわち、

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

、具体的な機能にpmap(f,c...)に引数fを割り当てるようにしてください。 (0.6.0では警告が生成され、world ageエラーではないことにも注意してください)

関連する問題