Síntese da Política

Para realizar a síntese da política de um caso do DECOMP é necessário estar em um diretório no qual estão os principais arquivos de saída do modelo. Por exemplo, para se realizar a síntese dos coeficientes dos cortes construídos, são necessarios os arquivos dec_fcf_cortes_NNN.rvX. Neste contexto, basta fazer:

$ sintetizador-decomp politica

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

>>> 2025-04-07 21:11:56,394 INFO: # Realizando síntese da POLITICA #
>>> 2025-04-07 21:11:56,395 INFO: Realizando síntese de CORTES_COEFICIENTES
>>> 2025-04-07 21:11:56,396 INFO: Lendo arquivo dec_eco_discr.csv
>>> 2025-04-07 21:11:56,410 INFO: Lendo arquivo dadger.rv0
>>> 2025-04-07 21:11:56,734 INFO: Lendo arquivo dec_fcf_cortes_001.rv0
>>> 2025-04-07 21:11:56,803 INFO: Lendo arquivo dec_fcf_cortes_002.rv0
>>> 2025-04-07 21:11:56,872 INFO: Lendo arquivo dec_fcf_cortes_003.rv0
>>> 2025-04-07 21:11:56,942 INFO: Lendo arquivo dec_fcf_cortes_004.rv0
>>> 2025-04-07 21:11:57,011 INFO: Lendo arquivo dec_fcf_cortes_005.rv0
>>> 2025-04-07 21:11:57,102 INFO: Tempo para sintese de CORTES_COEFICIENTES: 0.71 s
>>> 2025-04-07 21:11:57,102 INFO: Realizando síntese de CORTES_VARIAVEIS
>>> 2025-04-07 21:11:57,109 INFO: Tempo para sintese de CORTES_VARIAVEIS: 0.01 s
>>> 2025-04-07 21:11:57,112 INFO: Tempo para sintese da politica: 0.72 s
>>> 2025-04-07 21:11:57,112 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 política é produzido um arquivo com as informações das sínteses que foram realizadas:

metadados = pd.read_parquet("sintese/METADADOS_POLITICA.parquet")
print(metadados)

# A leitura das sínteses realizadas pode ser feita da seguinte forma:
variaveis = pd.read_parquet("sintese/CORTES_VARIAVEIS.parquet")
coeficientes = pd.read_parquet("sintese/CORTES_COEFICIENTES.parquet")
                 chave  ...                                     nome_longo
0  CORTES_COEFICIENTES  ...             Coeficientes dos cortes de Benders
1     CORTES_VARIAVEIS  ...  Descrição das variáveis dos cortes de Benders

[2 rows x 3 columns]

O formato dos dados de VARIAVEIS, que contém os dados referentes aos tipos das variáveis (eixos) dos cortes construídos:

print(variaveis)
   tipo_coeficiente nome_curto_coeficiente  ... unidade_coeficiente unidade_estado
0                 1                    RHS  ...             10^3 R$        10^3 R$
1                 6                   VARM  ...         10^3 R$/hm3            hm3
2                 4                   GTER  ...         10^3 R$/MWh            MWh
3                 8                   QDEF  ...         10^3 R$/hm3            hm3

[4 rows x 5 columns]

O formato dos dados de COEFICIENTES:

print(coeficientes.head(10))
   estagio  indice_corte  iteracao  ...  patamar  valor_coeficiente  valor_estado
0        1            28         1  ...        0       6.924769e+08 -5.726520e+09
1        1            28         1  ...        0      -5.776888e+02  6.046199e+02
2        1            28         1  ...        0      -5.641785e+02  0.000000e+00
3        1            28         1  ...        0      -5.518798e+02  0.000000e+00
4        1            28         1  ...        0      -5.194132e+02  1.133243e+04
5        1            28         1  ...        0      -4.276657e+02  2.130000e+03
6        1            28         1  ...        0      -3.938638e+02  0.000000e+00
7        1            28         1  ...        0      -3.417199e+02  0.000000e+00
8        1            28         1  ...        0      -3.044547e+02  0.000000e+00
9        1            28         1  ...        0      -2.904833e+02  0.000000e+00

[10 rows x 10 columns]

Cada dado pode ser visualizado de diferentes maneiras, a depender da aplicação.

# Por exemplo, é comum avaliar o comportamento dos coeficientes relativos ao volume
# armazenado de uma usina hidrelétrica (multiplicador do volume versus estado consultado)
# durante a construção da política do modelo para determinado estágio.

nome_coeficiente = "VARM"
tipo_coeficiente = variaveis.loc[
    variaveis["nome_curto_coeficiente"] == nome_coeficiente, "tipo_coeficiente"
].iloc[0]
uhe = 6
estagio = 1
coeficientes_varm = coeficientes.loc[
    (coeficientes["tipo_coeficiente"] == tipo_coeficiente)
    & (coeficientes["indice_entidade"] == uhe)
    & (coeficientes["estagio"] == 1)
]

fig = px.scatter(
    coeficientes_varm, x="valor_estado", y="valor_coeficiente", color="iteracao"
)
fig


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

Gallery generated by Sphinx-Gallery