Síntese da Operação

Para realizar a síntese da operação de um caso do DESSEM é necessário estar em um diretório no qual estão os principais arquivos de saída do modelo. 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 entdados, dadvaz, dessem.arq e operuh. Neste contexto, basta fazer:

$ sintetizador-dessem operacao

O sintetizador irá exibir o log da sua execução:

>>> 2025-04-08 14:26:58,020 INFO: # Realizando síntese da OPERACAO #
>>> .
>>> .
>>> .
>>> 2025-04-08 14:27:18,274 INFO: Realizando sintese de CFU_SIN
>>> 2025-04-08 14:27:18,317 INFO: Tempo para obtenção dos dados do pdo_operacao para SIN: 0.04 s
>>> 2025-04-08 14:27:18,318 INFO: Tempo para compactacao dos dados: 0.00 s
>>> 2025-04-08 14:27:18,319 INFO: Tempo para calculo dos limites: 0.00 s
>>> 2025-04-08 14:27:18,327 INFO: Tempo para preparacao para exportacao: 0.01 s
>>> 2025-04-08 14:27:18,334 INFO: Tempo para exportacao dos dados: 0.01 s
>>> 2025-04-08 14:27:18,334 INFO: Tempo para sintese de CFU_SIN: 0.06 s
>>> 2025-04-08 14:27:18,335 INFO: Realizando sintese de INT_SBP
>>> 2025-04-08 14:27:18,398 INFO: Lendo arquivo PDO_INTER.DAT
>>> 2025-04-08 14:27:18,946 INFO: Tempo para obtenção dos dados do pdo_inter para SBP: 0.61 s
>>> 2025-04-08 14:27:18,948 INFO: Tempo para compactacao dos dados: 0.00 s
>>> 2025-04-08 14:27:18,949 INFO: Tempo para calculo dos limites: 0.00 s
>>> 2025-04-08 14:27:18,956 INFO: Tempo para preparacao para exportacao: 0.01 s
>>> 2025-04-08 14:27:18,963 INFO: Tempo para exportacao dos dados: 0.01 s
>>> 2025-04-08 14:27:18,963 INFO: Tempo para sintese de INT_SBP: 0.63 s
>>> 2025-04-08 14:27:18,963 INFO: Realizando sintese de VCALHA_UHE
>>> 2025-04-08 14:27:19,009 INFO: Lendo arquivo PDO_OPER_TVIAG_CALHA.DAT
>>> 2025-04-08 14:27:19,108 INFO: Tempo para obtenção dos dados do pdo_oper_tviag_calha para UHE: 0.14 s
>>> 2025-04-08 14:27:19,110 INFO: Tempo para compactacao dos dados: 0.00 s
>>> 2025-04-08 14:27:19,111 INFO: Tempo para calculo dos limites: 0.00 s
>>> 2025-04-08 14:27:19,120 INFO: Tempo para preparacao para exportacao: 0.01 s
>>> 2025-04-08 14:27:19,129 INFO: Tempo para exportacao dos dados: 0.01 s
>>> 2025-04-08 14:27:19,130 INFO: Tempo para sintese de VCALHA_UHE: 0.17 s
>>> 2025-04-08 14:27:19,366 INFO: Tempo para sintese da operacao: 21.34 s
>>> 2025-04-08 14:27:19,366 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 pandas as pd

Para a síntese da operação é produzido um arquivo com as informações das sínteses que foram realizadas:

metadados = pd.read_parquet("sintese/METADADOS_OPERACAO.parquet")
print(metadados.head(10))
      chave nome_curto_variavel  ... calculado limitado
0   CMO_SBM                 CMO  ...     False    False
1   MER_SBM             Mercado  ...     False    False
2   MER_SIN             Mercado  ...     False    False
3  MERL_SBM        Mercado Líq.  ...     False    False
4  MERL_SIN        Mercado Líq.  ...     False    False
5  GHID_UHE                  GH  ...     False     True
6  GHID_SBM                  GH  ...     False     True
7  GHID_SIN                  GH  ...     False     True
8  GTER_UTE                  GT  ...     False     True
9  GTER_SBM                  GT  ...     False     True

[10 rows x 8 columns]

Os arquivos com os nomes das sínteses de operação armazenam os dados de todos os cenários simulados.

cmo = pd.read_parquet("sintese/CMO_SBM.parquet")
gter = pd.read_parquet("sintese/GTER_UTE.parquet")
mer = pd.read_parquet("sintese/MER_SIN.parquet")

O formato dos dados de GTER:

print(gter.head(10))
   codigo_usina  codigo_submercado  ...  limite_inferior limite_superior
0             1                  1  ...            640.0           640.0
1             1                  1  ...            640.0           640.0
2             1                  1  ...            640.0           640.0
3             1                  1  ...            640.0           640.0
4             1                  1  ...            640.0           640.0
5             1                  1  ...            640.0           640.0
6             1                  1  ...            640.0           640.0
7             1                  1  ...            640.0           640.0
8             1                  1  ...            640.0           640.0
9             1                  1  ...            640.0           640.0

[10 rows x 11 columns]

Os tipos de dados da síntese de GTER:

codigo_usina                       int64
codigo_submercado                  int64
estagio                            int64
data_inicio          datetime64[ns, UTC]
data_fim             datetime64[ns, UTC]
cenario                            int64
patamar                            int64
duracao_patamar                  float64
valor                            float64
limite_inferior                  float64
limite_superior                  float64
dtype: object

O formato dos dados de MER:

print(mer.head(10))
   estagio               data_inicio  ... limite_inferior  limite_superior
0        1 2024-10-25 00:00:00+00:00  ...            -inf              inf
1        2 2024-10-25 00:30:00+00:00  ...            -inf              inf
2        3 2024-10-25 01:00:00+00:00  ...            -inf              inf
3        4 2024-10-25 01:30:00+00:00  ...            -inf              inf
4        5 2024-10-25 02:00:00+00:00  ...            -inf              inf
5        6 2024-10-25 02:30:00+00:00  ...            -inf              inf
6        7 2024-10-25 03:00:00+00:00  ...            -inf              inf
7        8 2024-10-25 03:30:00+00:00  ...            -inf              inf
8        9 2024-10-25 04:00:00+00:00  ...            -inf              inf
9       10 2024-10-25 04:30:00+00:00  ...            -inf              inf

[10 rows x 9 columns]

Os tipos de dados da síntese de MER:

estagio                          int64
data_inicio        datetime64[ns, UTC]
data_fim           datetime64[ns, UTC]
cenario                          int64
patamar                          int64
duracao_patamar                float64
valor                          float64
limite_inferior                float64
limite_superior                float64
dtype: object

O formato dos dados de MER:

print(cmo.head(10))
   codigo_submercado  estagio  ... limite_inferior limite_superior
0                  1        1  ...            -inf             inf
1                  1        2  ...            -inf             inf
2                  1        3  ...            -inf             inf
3                  1        4  ...            -inf             inf
4                  1        5  ...            -inf             inf
5                  1        6  ...            -inf             inf
6                  1        7  ...            -inf             inf
7                  1        8  ...            -inf             inf
8                  1        9  ...            -inf             inf
9                  1       10  ...            -inf             inf

[10 rows x 10 columns]

Os tipos de dados da síntese de MER:

codigo_submercado                  int64
estagio                            int64
data_inicio          datetime64[ns, UTC]
data_fim             datetime64[ns, UTC]
cenario                            int64
patamar                            int64
duracao_patamar                  float64
valor                            float64
limite_inferior                  float64
limite_superior                  float64
dtype: object

De modo geral, os arquivos das sínteses de operação sempre possuem as colunas estagio, data_inicio, data_fim, cenario, patamar, duracao_patamar e valor. A depender se o arquivo é relativo a uma agregação espacial diferente de todo o SIN ou agregação temporal diferente do valor médio por estágio, existirão outras colunas adicionais para determinar de qual subconjunto da agregação o dado pertence. Por exemplo, no arquivo da síntese de CMO_SBM, existe uma coluna adicional de nome codigo_submercado.

A coluna de cenários contém não somente inteiros de 1 a N, onde N é o número de séries da simulação final do modelo. No caso específico do DESSEM, determinístico, apenas o cenário de índice 1 é obervado.

cenarios = mer["cenario"].unique().tolist()
print(cenarios)
[1]

Para variáveis da operação que possuam diferentes subconjuntos, como os submercados, podem ser visualizadas as variáveis simultâneamente.

fig = px.line(
    cmo,
    x="data_fim",
    y="valor",
    color="codigo_submercado",
)
fig


Para dados por UTE, como o número de subconjuntos é muito grande, é possível fazer um subconjunto dos elementos de interesse para a visualização:

gter_ute = gter.loc[gter["codigo_usina"].isin([1, 13, 146, 383])]
fig = px.line(
    gter_ute,
    x="data_inicio",
    y="valor",
    facet_col_wrap=2,
    facet_col="codigo_usina",
)
fig


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. No caso do DESSEM, determinístico, com apenas 1 cenário, os arquivos que contém estatísticas apresentam apenas a estatística de média, que correspondem aos próprios valores por cenário observados nas sínteses individuais.

estatisticas_uhe = pd.read_parquet("sintese/ESTATISTICAS_OPERACAO_UHE.parquet")
print(estatisticas_uhe.head(10))
metricas = estatisticas_uhe["cenario"].unique()
print(metricas)
  variavel  codigo_usina  codigo_ree  ...  valor  limite_inferior limite_superior
0     GHID             1          10  ...   6.64              0.0            46.0
1     GHID             1          10  ...   6.64              0.0            46.0
2     GHID             1          10  ...   6.65              0.0            46.0
3     GHID             1          10  ...   6.65              0.0            46.0
4     GHID             1          10  ...   6.65              0.0            46.0
5     GHID             1          10  ...   6.65              0.0            46.0
6     GHID             1          10  ...   6.65              0.0            46.0
7     GHID             1          10  ...   6.65              0.0            46.0
8     GHID             1          10  ...  10.41              0.0            46.0
9     GHID             1          10  ...  10.41              0.0            46.0

[10 rows x 13 columns]
['mean']

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

Gallery generated by Sphinx-Gallery