Julia 0.6 pmap функция

Я хочу парализовать алгоритм декомпозиции для оптимизации под названием 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, возможно, так же, как я программирую из более старой версии.

Любая идея?


person Héctor Otárola Garcés    schedule 14.10.2017    source источник
comment
Попробуйте посмотреть: docs.julialang.org/en/ стабильный / руководство / методы /   -  person Liso    schedule 15.10.2017
comment
Вы не предоставили достаточно кода для воспроизведения проблемы. Проблемы с возрастом мира возникают из-за определения функций с помощью eval. Я предполагаю, что вы должны делать это в PH, но мы понятия не имеем, как вы определили PH.   -  person Chris Rackauckas    schedule 16.10.2017


Ответы (1)


Недавно у меня была аналогичная проблема с pmap() в версии 0.6. Попробуйте присвоить аргумент 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)

person PRobbe    schedule 15.11.2017