Código fonte para idecomp.decomp.inviabunic

from idecomp._utils.bloco import Bloco
from idecomp.decomp.modelos.inviabunic import BlocoInviabilidadesIteracoes
from idecomp.decomp.modelos.inviabunic import BlocoInviabilidadesSimFinal
from idecomp.decomp.modelos.inviabunic import LeituraInviabUnic
from idecomp._utils.arquivo import ArquivoBlocos
from idecomp._utils.dadosarquivo import DadosArquivoBlocos
from typing import Type
import pandas as pd  # type: ignore


[documentos]class InviabUnic(ArquivoBlocos): """ Armazena os dados de saída do DECOMP referentes às inviabilidades ocorridas durante o processo de execução. Esta classe lida com as informações de saída fornecidas pelo DECOMP e reproduzidas no `inviab_unic.rvx`. """ def __init__(self, dados: DadosArquivoBlocos) -> None: super().__init__(dados) # Override
[documentos] @classmethod def le_arquivo(cls, diretorio: str, nome_arquivo="inviab_unic.rv0") -> 'InviabUnic': """ Realiza a leitura de um arquivo "inviab_unic.rvx" existente em um diretório. :param diretorio: O caminho relativo ou completo para o diretório onde se encontra o arquivo :type diretorio: str :param nome_arquivo: Nome do arquivo a ser lido, potencialmente especificando a revisão. Tem como valor default "inviab_unic.rv0" :type nome_arquivo: str, optional :return: Um objeto :class:`InviabUnic` com informações do arquivo lido """ leitor = LeituraInviabUnic(diretorio) r = leitor.le_arquivo(nome_arquivo) return cls(r)
def __obtem_bloco(self, tipo: Type[Bloco]) -> Bloco: """ """ for b in self._blocos: if isinstance(b, tipo): return b raise ValueError(f"Não foi encontrado um bloco do tipo {tipo}") @property def inviabilidades_iteracoes(self) -> pd.DataFrame: """ Tabela das inviabilidades visitadas pelo modelo durante as iterações. As colunas são: - Iteração (`int`): iteração de ocorrência da inviabilidade - FWD/BWD (`int`): momento de ocorrência da inviabilidade (0/1) - Estágio (`int`): estágio da ocorrência da inviabilidade - Cenário (`int`): cenário da ocorrência da inviabilidade - Restrição (`str`): mensagem da restrição como no arquivo - Violação (`float`): quantidade de violação da restrição - Unidade (`str`): unidade de medição da restrição violada :return: Tabela das inviabilidades no mesmo formato do arquivo `inviab_unic.rvX`. :rtype: pd.DataFrame """ b = self.__obtem_bloco(BlocoInviabilidadesIteracoes) return b.dados @property def inviabilidades_simulacao_final(self) -> pd.DataFrame: """ Tabela das inviabilidades visitadas pelo modelo durante a simulação final. As colunas são: - Estágio (`int`): estágio da ocorrência da inviabilidade - Cenário (`int`): cenário da ocorrência da inviabilidade - Restrição (`str`): mensagem da restrição como impressa - Violação (`float`): quantidade de violação da restrição - Unidade (`str`): unidade de medição da restrição violada :return: Tabela das inviabilidades no mesmo formato do arquivo `inviab_unic.rvX`. :rtype: pd.DataFrame """ b = self.__obtem_bloco(BlocoInviabilidadesSimFinal) return b.dados