Nota
Go to the end to download the full example code.
Síntese dos Cenários
Para realizar a síntese dos cenários de um caso do NEWAVE é necessário estar em um diretório
no qual estão os principais arquivos de saída do modelo. Em geral, as variáveis dos cenários gerados
são extraídos dos arquivos binários energiafXXX.dat, vazaofXXX.dat, etc.
Além dos arquivos dos quais são extraídas as variáveis em si, são lidos também alguns arquivos de entrada
do modelo, como o dger.dat
, ree.dat
e sistema.dat
. Neste contexto, basta fazer:
$ sintetizador-newave cenarios --processadores 4
O sintetizador irá exibir o log da sua execução:
>>> 2024-04-22 09:53:56,845 INFO: # Realizando síntese dos CENÁRIOS #
>>> 2024-07-16 17:34:18,473 INFO: Realizando síntese de ENAA_REE_FOR
>>> 2024-07-16 17:34:19,201 INFO: Obtendo energias forward da it. 1
>>> 2024-07-16 17:34:19,202 INFO: Obtendo energias forward da it. 4
>>> 2024-07-16 17:34:19,201 INFO: Obtendo energias forward da it. 3
>>> 2024-07-16 17:34:19,202 INFO: Obtendo energias forward da it. 2
>>> 2024-07-16 17:34:19,229 INFO: Obtendo energias forward da it. 5
>>> 2024-07-16 17:34:19,229 INFO: Obtendo energias forward da it. 6
>>> 2024-07-16 17:34:19,229 INFO: Obtendo energias forward da it. 7
>>> 2024-07-16 17:34:19,279 INFO: Obtendo energias forward da it. 9
>>> 2024-07-16 17:34:19,279 INFO: Obtendo energias forward da it. 10
>>> 2024-07-16 17:34:19,279 INFO: Obtendo energias forward da it. 8
>>> 2024-07-16 17:34:21,179 INFO: Tempo para obter energias forward: 1.99 s
>>> 2024-07-16 17:34:21,182 INFO: Tempo para compactacao dos dados: 0.00 s
>>> 2024-07-16 17:34:27,813 INFO: Tempo para calculo da MLT por REE: 6.62 s
>>> 2024-07-16 17:34:27,834 INFO: Tempo para exportacao dos dados: 0.01 s
>>> 2024-07-16 17:34:27,834 INFO: Tempo para sintese de ENAA_REE_FOR: 9.36 s
>>> .
>>> .
>>> .
>>> 2024-07-16 17:34:35,766 INFO: Realizando síntese de QINC_SIN_SF
>>> 2024-07-16 17:34:35,786 INFO: Tempo para exportacao dos dados: 0.00 s
>>> 2024-07-16 17:34:35,786 INFO: Tempo para sintese de QINC_SIN_SF: 0.02 s
>>> 2024-07-16 17:34:35,952 INFO: Tempo para síntese dos cenários: 17.50 s
>>> 2024-07-16 17:33:39,187 INFO: # Fim da síntese #
Os arquivos serão salvos no subdiretório sintese
. Para realizar o processamento,
pode ser utilizado o próprio python
:
import plotly.express as px
import plotly.graph_objects as go
import pandas as pd
Para a síntese dos cenários é produzido um arquivo com as informações das sínteses que foram realizadas:
metadados = pd.read_parquet("sintese/METADADOS_CENARIOS.parquet")
print(metadados.head(10))
chave nome_curto_variavel ... nome_longo_etapa unidade
0 ENAA_REE_FOR ENA ... Forward MWmes
1 ENAA_REE_BKW ENA ... Backward MWmes
2 ENAA_REE_SF ENA ... Simulação Final MWmes
3 ENAA_SBM_FOR ENA ... Forward MWmes
4 ENAA_SBM_BKW ENA ... Backward MWmes
5 ENAA_SBM_SF ENA ... Simulação Final MWmes
6 ENAA_SIN_FOR ENA ... Forward MWmes
7 ENAA_SIN_BKW ENA ... Backward MWmes
8 ENAA_SIN_SF ENA ... Simulação Final MWmes
9 QINC_UHE_FOR QINC ... Forward m3/s
[10 rows x 8 columns]
Os arquivos com os nomes das sínteses de cenários armazenam os dados de todos os cenários gerados.
cenarios_uhe_for = pd.read_parquet("sintese/QINC_UHE_FOR.parquet")
cenarios_ree_sf = pd.read_parquet("sintese/ENAA_REE_SF.parquet")
cenarios_sin_bkw = pd.read_parquet("sintese/ENAA_SIN_BKW.parquet")
O formato dos dados por UHE:
print(cenarios_uhe_for.head(10))
codigo_usina codigo_ree codigo_submercado ... valor mlt valor_mlt
0 1 10 1 ... 70.11 75.835165 0.924505
1 1 10 1 ... 62.76 75.835165 0.827584
2 1 10 1 ... 126.97 75.835165 1.674289
3 1 10 1 ... 59.80 75.835165 0.788552
4 1 10 1 ... 99.89 108.087912 0.924155
5 1 10 1 ... 102.26 108.087912 0.946082
6 1 10 1 ... 104.01 108.087912 0.962272
7 1 10 1 ... 93.62 108.087912 0.866147
8 1 10 1 ... 168.77 175.703297 0.960540
9 1 10 1 ... 173.14 175.703297 0.985411
[10 rows x 11 columns]
Os tipos de dados da síntese de cenários por UHE:
codigo_usina int64
codigo_ree int64
codigo_submercado int64
iteracao int64
estagio int64
data_inicio datetime64[ns, UTC]
data_fim datetime64[ns, UTC]
cenario int64
valor float64
mlt float64
valor_mlt float64
dtype: object
O formato dos dados por REE:
print(cenarios_ree_sf.head(10))
codigo_ree codigo_submercado estagio ... valor mlt valor_mlt
0 1 1 1 ... 2316.709658 3157.023187 0.733827
1 1 1 1 ... 2060.123382 3157.023187 0.652553
2 1 1 1 ... 3641.376648 3157.023187 1.153421
3 1 1 1 ... 3273.191547 3157.023187 1.036797
4 1 1 1 ... 2678.370192 3157.023187 0.848385
5 1 1 1 ... 2605.539787 3157.023187 0.825315
6 1 1 1 ... 3076.620755 3157.023187 0.974532
7 1 1 2 ... 4523.646878 5104.207582 0.886258
8 1 1 2 ... 4418.961990 5104.207582 0.865749
9 1 1 2 ... 4815.703108 5104.207582 0.943477
[10 rows x 9 columns]
Os tipos de dados da síntese de cenários por REE:
codigo_ree int64
codigo_submercado int64
estagio int64
data_inicio datetime64[ns, UTC]
data_fim datetime64[ns, UTC]
cenario int64
valor float64
mlt float64
valor_mlt float64
dtype: object
O formato dos dados para o SIN:
print(cenarios_sin_bkw.head(10))
iteracao estagio ... mlt valor_mlt
0 1 1 ... 42548.775165 0.828014
1 1 1 ... 42548.775165 0.828014
2 1 1 ... 42548.775165 0.828014
3 1 1 ... 42548.775165 0.828014
4 1 2 ... 50163.234945 1.006599
5 1 2 ... 50163.234945 0.851505
6 1 2 ... 50163.234945 1.299124
7 1 2 ... 50163.234945 0.976602
8 1 3 ... 73506.076923 0.754332
9 1 3 ... 73506.076923 0.747752
[10 rows x 9 columns]
Os tipos de dados da síntese de cenários para o SIN:
iteracao int64
estagio int64
data_inicio datetime64[ns, UTC]
data_fim datetime64[ns, UTC]
cenario int64
abertura int64
valor float64
mlt float64
valor_mlt float64
dtype: object
De modo geral, os arquivos das sínteses de cenários sempre possuem as colunas
estagio
, data_inicio
, data_fim
, cenario
, valor
, mlt
e valor_mlt
. A depender se o arquivo é
referente à etapa forward ou backward,existirá uma coluna adicional iteracao
. Apenas
na etapa backward existirá a coluna abertura
.
Da mesma maneira que para as demais sínteses, é possível produzir visualizações e estatísticas a partir dos arquivos gerados.
fig = px.box(
cenarios_sin_bkw,
x="estagio",
y="valor_mlt",
color="iteracao",
)
fig
Repare que para os arquivos da síntese da operação, a referência da numeração dos estágios é diferente da numeração dos estágios da síntese dos cenários. Na síntese dos cenários, como os arquivos processados são os binários do modelo, o estágio “1” não se refere necessariamente ao primeiro mês do período do estudo.
Além dos arquivos com as sínteses dos cenários, estão disponíveis também os arquivos que agregam estatísticas das previsões:
estatisticas = pd.read_parquet("sintese/ESTATISTICAS_CENARIOS_UHE_FOR.parquet")
print(estatisticas.head(10))
variavel codigo_usina codigo_ree ... valor mlt valor_mlt
0 QINC 1 10 ... 126.9700 75.835165 1.674289
1 QINC 1 10 ... 79.9100 75.835165 1.053733
2 QINC 1 10 ... 66.4350 75.835165 0.876045
3 QINC 1 10 ... 59.8000 75.835165 0.788552
4 QINC 1 10 ... 60.6880 75.835165 0.800262
5 QINC 1 10 ... 61.1320 75.835165 0.806117
6 QINC 1 10 ... 61.5760 75.835165 0.811972
7 QINC 1 10 ... 62.0200 75.835165 0.817826
8 QINC 1 10 ... 62.4640 75.835165 0.823681
9 QINC 1 10 ... 63.1275 75.835165 0.832430
[10 rows x 12 columns]
As informações dos arquivos de estatísticas são:
print(estatisticas.columns)
Index(['variavel', 'codigo_usina', 'codigo_ree', 'codigo_submercado',
'iteracao', 'estagio', 'data_inicio', 'data_fim', 'cenario', 'valor',
'mlt', 'valor_mlt'],
dtype='object')
As estatísticas disponíveis são os valores mínimos, máximos, médios e quantis a cada 5 percentis para cada variável de cada elemento de sistema. No caso das UHEs:
print(estatisticas["cenario"].unique())
<StringArray>
[ 'max', 'mean', 'median', 'min', 'p10', 'p15', 'p20',
'p25', 'p30', 'p35', 'p40', 'p45', 'p5', 'p55',
'p60', 'p65', 'p70', 'p75', 'p80', 'p85', 'p90',
'p95', 'std']
Length: 23, dtype: string
Total running time of the script: (0 minutes 0.105 seconds)