Leitura dos binários forwarh.dat e forward.dat

Aviso

Estes arquivos podem mudar de formato com frequência mediante o versionamento do modelo. Recomenda-se atenção com o uso da propriedade set_version para a versão correta e, caso esta não seja suportada, a abertura de uma issue.

Para ilustrar o processamento destes arquivos, serão usados módulos de visualização como o plotly

import plotly.io as pio

pio.templates.default = "ggplot2"

O forward.dat é o arquivo binário de saída do modelo NEWAVE que contém as informações sobre a simulação final. Para casos oficiais, seu tamanho pode chegar a vários GB. A leitura deste arquivo só é possível ao processar anteriormente o arquivo forwarh.dat, que contém informações necessárias para configurar a leitura do forward.dat.

from inewave.newave.forwarh import Forwarh

arq_cabecalho = Forwarh.read("./newave/forwarh.dat")

tamanho_registro = arq_cabecalho.tamanho_registro_arquivo_forward

numero_estagios = 1  # arq_cabecalho.numero_estagios_estudo
numero_forwards = 2  # arq_cabecalho.numero_series_gravadas

numero_forwards = arq_cabecalho.numero_registros_arquivo_forward
numero_rees = arq_cabecalho.numero_rees
numero_submercados = arq_cabecalho.numero_submercados
numero_total_submercados = arq_cabecalho.numero_total_submercados
numero_patamares_carga = arq_cabecalho.numero_patamares_carga
numero_patamares_deficit = arq_cabecalho.numero_patamares_deficit
numero_classes_termicas_submercados = (
    arq_cabecalho.numero_classes_termicas_submercados
)

Além do arquivo forwarh.dat, é necessário obter informações de alguns outros arquivos de entrada, que serão utilizadas para a montagem dos DataFrame retornados pelas propriedades da classe Forward de maneira coerente

from inewave.newave import Adterm, Agrint, Confhd, Conft

arq_adterm = Adterm.read("./newave/adterm.dat")
arq_agrint = Agrint.read("./newave/agrint.dat")
arq_confhd = Confhd.read("./newave/confhd.dat")
arq_conft = Conft.read("./newave/conft.dat")

numero_agrupamentos_intercambio = len(
    arq_agrint.agrupamentos["agrupamento"].unique()
)

uhes = arq_confhd.usinas
nomes_usinas_hidreletricas = uhes["nome_usina"].to_list()
numero_usinas_hidreletricas = len(nomes_usinas_hidreletricas)

utes = arq_conft.usinas
utes = utes.sort_values("submercado")
nomes_classes_termicas = utes["nome_usina"].unique()

lag_maximo_usinas_gnl = arq_adterm.despachos["lag"].max()

Aviso

Caso a leitura esteja sendo feita nos arquivos provenientes de uma execução oficial do modelo, recomenda-se que seja em um ambiente com quantidade suficiente de memória RAM. A implementação atual realiza a conversão de todos os dados lidos para formato de DataFrames, resultando em um grande consumo de memória. Os arquivos tratados neste exemplo são de uma execução reduzida específica para os testes.

A leitura do arquivo binário com os dados é feita utilizando as informações adquiridas anteriormente. O número de estágios e simulações forward, que deveriam ser obtidos do arquivo cabeçalho, são atribuídos manualmente como constantes, pois o arquivo de dados foi editado manualmente para economia de espaço no repositório. Da mesma forma, as variáveis de número de parques eólicos equivalentes e estações de bombeamento também foram atribuídos manualmente, pois deveriam ser lidos dos arquivos em formato LIBS, que não existiam para o caso de teste.

O arquivo binário possui um grande número de propriedades, que podem ser consultadas diretamente na documentação do Forward. Um exemplo é o custo marginal da operação em R$/MWh

cmo = arq_binario.custo_marginal_operacao
cmo
estagio cenario submercado patamar valor
0 1 1 SUDESTE 1 737.010010
1 1 1 SUDESTE 2 737.010010
2 1 1 SUDESTE 3 182.199997
3 1 1 SUL 1 737.015015
4 1 1 SUL 2 737.015015
5 1 1 SUL 3 182.205002
6 1 1 NORDESTE 1 0.007271
7 1 1 NORDESTE 2 0.006899
8 1 1 NORDESTE 3 0.006899
9 1 1 NORTE 1 0.002271
10 1 1 NORTE 2 0.001899
11 1 1 NORTE 3 0.001899
12 1 2 SUDESTE 1 548.039978
13 1 2 SUDESTE 2 545.972778
14 1 2 SUDESTE 3 328.429993
15 1 2 SUL 1 548.044983
16 1 2 SUL 2 545.977783
17 1 2 SUL 3 328.434998
18 1 2 NORDESTE 1 334.051575
19 1 2 NORDESTE 2 334.051575
20 1 2 NORDESTE 3 328.424988
21 1 2 NORTE 1 334.046570
22 1 2 NORTE 2 334.046570
23 1 2 NORTE 3 328.424988


Total running time of the script: (0 minutes 0.042 seconds)

Gallery generated by Sphinx-Gallery