-
Notifications
You must be signed in to change notification settings - Fork 1
/
entrada.jl
135 lines (113 loc) · 4.63 KB
/
entrada.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
using DataFrames
using CSV
#pasta_principal = "Dropbox/LAC/Alocação de unidades/Curtissimo Cascata Finardi"
if ~occursin("Finardi", pwd())
try
cd("Dropbox/LAC/Alocação de unidades/Curtissimo Cascata Finardi")
catch
nothing
end
end
if ~isfile("Dados/entrada.csv") || ~isfile("Dados/potencia_instalada_hidr.csv")
include("hidr.jl")
end
if ~isfile("Dados/Dessem/deflu_h.csv")
include("deflu_h.jl")
end
if ~isfile("Dados/Dessem/demanda_sub_h.csv") || ~isfile("Dados/Dessem/tempo_viagem.csv")
include("Entrada_dados.jl")
end
onde(codigo; cod_usinas = cod_usinas) = findall(x-> x == codigo, cod_usinas)[1]
#pasta_dados = "Dados/Dessem/"
cod_usinas = collect(Iterators.flatten((71:74, 76:77)))
#Defluência Anterior
DefAnt = CSV.File(string("Dados/Dessem/deflu_h.csv")) |> DataFrame!
index_def = findall(x -> x in cod_usinas, DefAnt[!,:Mont])
DefAnt = DefAnt[index_def,1:end]
#Pegando a Hidr (várias informações importantes das usinas estão aqui)
Hidr = CSV.File(string("Dados/entrada.csv")) |> DataFrame!
all_sub_sis = unique(Hidr[!,:sub_sis]) #Dict([(Hidr[k,:cod_usinas], Hidr[k,:sub_sis]) for k = 1:size(Hidr)[1]]) #cod_usina => subsistema
#gb = groupby(Hidr, :sub_sis)
Demanda_subsistema = Dict()
#Demanda por Subsistema
Dem_sub = CSV.File(string("Dados/Dessem/demanda_sub_h.csv")) |> DataFrame!
#demanda(sub_sistema) = Dem_sub[Dem_sub[!,:ss] .== sub_sistema,1:end]
#Dem_sub[Dem_sub[!,:ss] .== 2,1:end]
aux2 = Dem_sub[!,:di] .== 1 #dia inicial, chutei um dia qualquer
SubSis_usinas = Dict() #dicionário onde entra o subsistema e sai as usinas pertencentes a ele
for sub = all_sub_sis
#get!(dicionario, variável, imagem), adiciona no dicionário variável => imagem
#obs: não sobrescreve o valor caso variável já esteja no dicionário
#get!(SubSis_usinas,sub,Array(gb[(sub_sis = 2,)][!,:cod_usinas]))
get!(SubSis_usinas,sub, Hidr[Hidr[!,:sub_sis] .== sub, :cod_usinas])
aux1 = Dem_sub[!,:ss] .== sub
get!(Demanda_subsistema,sub, Dem_sub[aux1 .& aux2, :Demanda])
end
#Abor_horaria = false
#Demanda_usina = Dict()
#if Abor_horaria
# for sub = all_sub_sis
# usinas = SubSis_usinas[sub]
# for usina = usinas
# get!(Demanda_usina,usina
# end
# end
#end
pot_max_hidr = CSV.File(string("Dados/potencia_instalada_hidr.csv")) |> DataFrame!
max_hidr = Dict()
max_sub = Dict()
for sub = all_sub_sis
get!(max_hidr, sub, pot_max_hidr[pot_max_hidr[!,:sub_sis] .== sub,:pot_instalada][1])
get!(max_sub, sub, maximum(Demanda_subsistema[sub]))
end
#abordagem Hidr utiliza uma demanda menor por usina pois é > que o maximum da Demanda
if ~isfile("Dados/demanda_demanda.csv") #muda o limiter
demanda_usina = Dict()
#hidr = CSV.File(string("Dados/entrada.csv")) |> DataFrame!
demanda_total = 0.
for sub = all_sub_sis
contador = 0
usinas_sub = SubSis_usinas[sub]
limiter = max_sub[sub]
for usina = usinas_sub
pot_instalada_usina = Hidr[Hidr[!,:cod_usinas] .== usina,:pot_total][1]
get!(demanda_usina, usina, Demanda_subsistema[sub] *pot_instalada_usina/limiter)
#global nn += sum(demanda_usina[usina], dims = 2)
if contador == 0
global demanda_total = demanda_usina[usina]
else
global demanda_total += demanda_usina[usina]
end
contador += 1
end
get!(demanda_usina, -sub, demanda_total)
end
df_a = DataFrame(demanda_usina)
CSV.write("Dados/demanda_demanda.csv", df_a)
println("Arquivo \"demanda_demanda.csv\" criado")
end
if ~isfile("Dados/demanda_hidr.csv") #muda o limiter
demanda_usina = Dict()
#hidr = CSV.File(string("Dados/entrada.csv")) |> DataFrame!
demanda_total = 0.
for sub = all_sub_sis
contador = 0
usinas_sub = SubSis_usinas[sub]
limiter = max_hidr[sub]
for usina = usinas_sub
pot_instalada_usina = Hidr[Hidr[!,:cod_usinas] .== usina,:pot_total][1]
get!(demanda_usina, usina, Demanda_subsistema[sub] *pot_instalada_usina/limiter)
#global nn += sum(demanda_usina[usina], dims = 2)
if contador == 0
global demanda_total = demanda_usina[usina]
else
global demanda_total += demanda_usina[usina]
end
contador += 1
end
get!(demanda_usina, -sub, demanda_total)
end
df_b = DataFrame(demanda_usina)
CSV.write("Dados/demanda_hidr.csv", df_b)
println("Arquivo \"demanda_hidr.csv\" criado")
end