Использование Юлии 1.2. У меня довольно большая проблема, связанная с многочисленными клиентами на рынке электроэнергии, и я хочу использовать распределенные вычисления, чтобы ускорить решение. Но я не совсем уверен, каким должен быть макет, я не хочу, чтобы работники записывали в общие массивы один поверх другого. Кроме того, мой код по-прежнему работает очень медленно ...
Может ли кто-нибудь проверить правильность расположения ниже?
using Distributed
n_workers = workers()
if n_workers[end]<3
addprocs(3)
end
@everywhere using JuMP, Gurobi, DataFrames, CSV, DelimitedFiles, SharedArrays
###I initialize many shared arrays into which I want my results to go into
Results=SharedArray{Float64,2}(length(vec4), 38)
Injection_IndPros=SharedArray{Float64,3}(length(vec4)*length(day_steps), length(time_steps), tot_consumers)
Injection_Prosumers=SharedArray{Float64,2}(length(vec4)*length(day_steps), length(time_steps))
Prosumer_caps=SharedArray{Float64,2}(length(vec4)*4, tot_households)
Year_behav=SharedArray{Float64,2}(length(vec4)*length(time_steps),6)
@sync @distributed for iter4=1:length(vec4)
###Call in a function which returns results
####Then I carry out some calculations on these results (here I also use normal matrices, I do not use @everywhere here)
####Then I put my calculated results into the shared arrays for e.g.
Results[iter4,:]=[w_max_with[1]/8, w_max_inj[1]/8, obj, Net_injection, Invest_PV, Totcap_PV, Invest_PVINV, Totcap_PVINV, Totgen_PV, Maxgen_PV, Curtailment_PV, Invest_BAT, Totcap_BAT, Invest_BATINV, Totcap_BATINV, Invest_WIND, Totcap_WIND, Totgen_WIND, Invest_Conv_Base, cap_conv_opt[1], Invest_Conv_Mid, cap_conv_opt[2], Invest_Conv_Peak, cap_conv_opt[3],Totgen_CONVBASE, Totgen_CONVMID, Totgen_CONVPEAK, Totgen_CONV, Totgen_ALL, Genshare_PV, Genshare_WIND, Genshare_CONVBASE, Genshare_CONVMID, Genshare_CONVPEAK, Yearavg_elec_price, Max_inj_pos, Avg_INVtoPV_ratio, Avg_INVtoBAT_ratio]
end #here ends the distributed for loop