2017-10-14 7 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로부터 벡터를 필요로합니다.

paralelize하려면이 작업을 시도하십시오. 내가 줄리아 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

가 보는 시도 (또한 0.6.0에서 경고가 생성되는 점에 유의 아닌 world age 오류) 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를 할당하려고합니다. https://docs.julialang.org/en/stable/manual/methods/#Redefining-Methods- :