Example #1
0
 def __escreve_cenario(self, arquivo: IO, cenario: Cenario):
     """
     Escreve informações sobre um cenário no relatório de saída.
     """
     # Calcula os campos existentes com base no número de UHE e UTE
     campos = [13] + [19] * (5 * len(self.uhes) + len(self.utes) + 5)
     self.__escreve_borda_tabela(arquivo, campos)
     # Escreve o cabeçalho da tabela
     cab_tabela = "    PERÍODO    "
     for i in range(len(self.uhes)):
         ind_uhe = str(i + 1).ljust(2)
         cab_tabela += "      AFL({})       ".format(ind_uhe)
         cab_tabela += "      VF({})        ".format(ind_uhe)
         cab_tabela += "      VT({})        ".format(ind_uhe)
         cab_tabela += "      VV({})        ".format(ind_uhe)
         cab_tabela += "      CMA({})       ".format(ind_uhe)
     for i in range(len(self.utes)):
         ind_ute = str(i + 1).ljust(2)
         cab_tabela += "      GT({})        ".format(ind_ute)
     cab_tabela += "      DEFICIT       "
     cab_tabela += "        CMO         "
     cab_tabela += "   CUSTO IMEDIATO   "
     cab_tabela += "    CUSTO FUTURO    "
     cab_tabela += "    CUSTO TOTAL     "
     arquivo.write(cab_tabela + "\n")
     # Escreve as linhas com dados numéricos
     linhas_cenario = cenario.linhas_tabela()
     for linha in linhas_cenario:
         arquivo.write(linha)
     self.__escreve_borda_tabela(arquivo, campos)
Example #2
0
    def __init__(self, resultados: List[Resultado], caminho: str,
                 LOG_LEVEL: str):

        self.uhes: List[UHE] = resultados[0].uhes
        self.utes: List[UTE] = resultados[0].utes
        self.resultados = resultados
        self.cenarios_medios = [
            Cenario.cenario_medio(r.cenarios) for r in resultados
        ]
        self.caminho = caminho
        coloredlogs.install(logger=logger, level=LOG_LEVEL)
Example #3
0
 def visualiza_volume_final(self):
     """
     Gera os gráficos para acompanhamento dos volumes finais.
     """
     logger.debug("Visualizações de volume final...")
     # Se o diretório para os volumes finais não existe, cria
     caminho = self.caminho + "volume_final/"
     if not os.path.exists(caminho):
         os.makedirs(caminho)
     # Um gráfico de saída para cada UHE
     n_periodos = len(self.cenarios[0].volumes_finais[0])
     n_cenarios = len(self.cenarios)
     cmap = plt.get_cmap('viridis')
     for i, uh in enumerate(self.uhes):
         # Configurações gerais do gráfico
         plt.figure(figsize=(12, 6))
         plt.title("VOLUME FINAL PARA {}".format(uh.nome))
         # Eixo x:
         plt.xlabel("Período de estudo")
         x = np.arange(1, n_periodos + 1, 1)
         plt.xticks(x)
         # Eixo y:
         plt.ylabel("Volume final (hm3)")
         for j, cen in enumerate(self.cenarios):
             plt.plot(x,
                      cen.volumes_finais[i],
                      color=cmap(j / n_cenarios),
                      marker="o",
                      linewidth=4,
                      alpha=0.2,
                      label="Cenário {}".format(j + 1))
         # Plota o cenário médio
         cenario_medio = Cenario.cenario_medio(self.cenarios)
         plt.plot(x,
                  cenario_medio.volumes_finais[i],
                  color=cmap(1),
                  marker="o",
                  linewidth=16,
                  alpha=0.2,
                  label="Cenário médio")
         # Salva a imagem e exporta os dados
         caminho_saida = caminho + "{}".format(uh.nome)
         plt.savefig(caminho_saida + ".png")
         cabecalho = ["PERIODO", "VOLUME_FINAL"]
         dados = [x, cenario_medio.volumes_finais[i]]
         self.exporta_dados(caminho_saida, cabecalho, dados)
         plt.close()
Example #4
0
 def visualiza_fobj(self):
     """
     Gera os gráficos para acompanhamento do Custo Total.
     """
     logger.debug("Visualização de custos totais...")
     # Se o diretório para o CMO não existe, cria
     caminho = self.caminho + "custo_total/"
     if not os.path.exists(caminho):
         os.makedirs(caminho)
     # Um gráfico de saída para cada UTE
     n_periodos = len(self.cenarios[0].volumes_finais[0])
     n_cenarios = len(self.cenarios)
     cmap = plt.get_cmap('viridis')
     # Configurações gerais do gráfico
     plt.figure(figsize=(12, 6))
     plt.title("CUSTO TOTAL DE OPERAÇÃO")
     # Eixo x:
     plt.xlabel("Período de estudo")
     x = np.arange(1, n_periodos + 1, 1)
     plt.xticks(x)
     # Eixo y:
     plt.ylabel("Custo ($/MWmed)")
     for j, cen in enumerate(self.cenarios):
         plt.plot(x,
                  cen.fobj,
                  color=cmap(j / n_cenarios),
                  marker="o",
                  linewidth=4,
                  alpha=0.2,
                  label="Cenário {}".format(j + 1))
     # Plota o cenário médio
     cenario_medio = Cenario.cenario_medio(self.cenarios)
     plt.plot(x,
              cenario_medio.fobj,
              color=cmap(1),
              marker="o",
              linewidth=16,
              alpha=0.2,
              label="Cenário médio")
     # Salva a imagem e exporta os dados
     caminho_saida = caminho + "fobj"
     plt.savefig(caminho_saida + ".png")
     cabecalho = ["PERIODO", "CUSTO_TOTAL"]
     dados = [x, cenario_medio.fobj]
     self.exporta_dados(caminho_saida, cabecalho, dados)
     plt.close()
Example #5
0
 def __escreve_cenario_medio(self, arquivo: IO):
     """
     Escreve informações sobre os cenários médios no relatório de saída.
     """
     logger.info("Escrevendo cenário médio...")
     arquivo.write("RELATÓRIO DE CENÁRIOS MÉDIOS\n\n")
     # Calcula os campos existentes com base no número de UHE e UTE
     campos = [13] + [19] * (5 * len(self.uhes) + len(self.utes) + 5)
     self.__escreve_borda_tabela(arquivo, campos)
     logger.debug("X-------------X-------------------X-------------------X")
     # Escreve o cabeçalho da tabela
     cab_tabela = "    PERÍODO    "
     for i in range(len(self.uhes)):
         ind_uhe = str(i + 1).ljust(2)
         cab_tabela += "      AFL({})       ".format(ind_uhe)
         cab_tabela += "      VF({})        ".format(ind_uhe)
         cab_tabela += "      VT({})        ".format(ind_uhe)
         cab_tabela += "      VV({})        ".format(ind_uhe)
         cab_tabela += "      CMA({})       ".format(ind_uhe)
     for i in range(len(self.utes)):
         ind_ute = str(i + 1).ljust(2)
         cab_tabela += "      GT({})        ".format(ind_ute)
     cab_tabela += "      DEFICIT       "
     cab_tabela += "        CMO         "
     cab_tabela += "   CUSTO IMEDIATO   "
     cab_tabela += "    CUSTO FUTURO    "
     cab_tabela += "    CUSTO TOTAL     "
     logger.debug("    PERÍODO       CUSTO IMEDIATO       CUSTO FUTURO    ")
     arquivo.write(cab_tabela + "\n")
     # Constroi o cenário médio
     cenario_medio = Cenario.cenario_medio(self.cenarios)
     # Escreve as linhas com dados numéricos
     linhas_cenario = cenario_medio.linhas_tabela()
     for linha in linhas_cenario:
         arquivo.write(linha)
     # Faz o logging das linhas na saída padrão
     for i in range(len(linhas_cenario)):
         logger.debug(" " + str(i + 1).rjust(13) +
                      "{:19.4f}".format(cenario_medio.ci[i]) + " " +
                      "{:19.4f}".format(cenario_medio.alpha[i]))
     self.__escreve_borda_tabela(arquivo, campos)
     logger.debug("X-------------X-------------------X-------------------X")
     arquivo.write("\n")
Example #6
0
 def organiza_cenarios(self) -> List[Cenario]:
     """
     Para cada dente do pente, monta as séries históricas de cada
     variável de interesse no estudo realizado.
     """
     return [Cenario.cenario_dos_nos(d) for d in self.dentes]