Corrige acentuacao dos textos
This commit is contained in:
@@ -11,8 +11,8 @@ Saidas:
|
||||
resultados/validacao/validacao_2025_barras.png
|
||||
|
||||
Papel no pipeline:
|
||||
Mantem a demanda historica de 2025, gera candidatos compativeis para cada
|
||||
slot historico e usa MILP para redistribuir tripulantes preservando horas.
|
||||
Mantém a demanda histórica de 2025, gera candidatos compatíveis para cada
|
||||
slot histórico e usa MILP para redistribuir tripulantes preservando horas.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -89,7 +89,7 @@ def _tripulantes(valor: object) -> list[str]:
|
||||
|
||||
|
||||
def importar_voos_2025(origem: Path = config.ARQUIVO_QUADRO_VOO_2025, destino: Path = config.ARQUIVO_VOOS_2025) -> pd.DataFrame:
|
||||
"""Importa voos realizados de 2025 da aba VOOS para o CSV de validacao."""
|
||||
"""Importa voos realizados de 2025 da aba VOOS para o CSV de validação."""
|
||||
io_utils.exigir_arquivos([origem])
|
||||
raw = pd.read_excel(origem, sheet_name=config.ABAS["voos_2025"], header=None)
|
||||
linhas = []
|
||||
@@ -176,7 +176,7 @@ def _png_barras(path: Path, metricas: pd.DataFrame) -> Path:
|
||||
|
||||
|
||||
def executar_validacao_2025(importar: bool = True, logger=None) -> dict:
|
||||
"""Executa a validacao completa e exporta os artefatos finais."""
|
||||
"""Executa a validação completa e exporta os artefatos finais."""
|
||||
io_utils.configurar_ambiente()
|
||||
logger = logger or io_utils.configurar_logger("validacao_2025")
|
||||
inicio = pd.Timestamp.now()
|
||||
@@ -189,9 +189,9 @@ def executar_validacao_2025(importar: bool = True, logger=None) -> dict:
|
||||
|
||||
voos = carregar_voos_2025(config.ARQUIVO_VOOS_2025)
|
||||
if voos.empty:
|
||||
raise RuntimeError("Erro: base de validacao 2025 vazia. Verifique dados/validacao/voos_2025.csv.")
|
||||
raise RuntimeError("Erro: base de validação 2025 vazia. Verifique dados/validacao/voos_2025.csv.")
|
||||
if (voos["horas_voadas"] < 0).any():
|
||||
raise RuntimeError("Erro: foram encontradas horas voadas negativas na validacao 2025.")
|
||||
raise RuntimeError("Erro: foram encontradas horas voadas negativas na validação 2025.")
|
||||
|
||||
resultado = otimizar_equalizacao_50(
|
||||
config.PROJECT_ROOT,
|
||||
@@ -204,7 +204,7 @@ def executar_validacao_2025(importar: bool = True, logger=None) -> dict:
|
||||
total_real = float(metricas.loc[metricas["cenario"] == "real_2025", "horas_total"].iloc[0])
|
||||
total_otim = float(metricas.loc[metricas["cenario"] == "otimizado_meta_50", "horas_total"].iloc[0])
|
||||
if abs(total_real - total_otim) > 0.01:
|
||||
logger.warning("Horas nao preservadas: real=%s otimizado=%s", total_real, total_otim)
|
||||
logger.warning("Horas não preservadas: real=%s otimizado=%s", total_real, total_otim)
|
||||
|
||||
resumo_path = config.VALIDACAO_DIR / "validacao_2025_resumo.xlsx"
|
||||
detalhada_path = config.VALIDACAO_DIR / "validacao_2025_detalhada.xlsx"
|
||||
@@ -231,7 +231,7 @@ def executar_validacao_2025(importar: bool = True, logger=None) -> dict:
|
||||
logger.info("Alocacoes otimizadas: %s", len(resultado["otimizados"]))
|
||||
logger.info("Tripulantes comparados: %s", len(resultado["comparativo"]))
|
||||
logger.info("Status solver: %s", resultado["status_solver"]["mensagem"])
|
||||
logger.info("Tempo de validacao: %.1f s", duracao)
|
||||
logger.info("Tempo de validação: %.1f s", duracao)
|
||||
logger.info("Arquivos exportados: %s | %s | %s | %s", resumo_path, detalhada_path, metricas_path, grafico_path)
|
||||
|
||||
return {
|
||||
@@ -242,11 +242,11 @@ def executar_validacao_2025(importar: bool = True, logger=None) -> dict:
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""Ponto de entrada da validacao 2025."""
|
||||
"""Ponto de entrada da validação 2025."""
|
||||
logger = io_utils.configurar_logger("validacao_2025")
|
||||
saida = executar_validacao_2025(importar=True, logger=logger)
|
||||
metricas = saida["resultado"]["metricas"]
|
||||
print("\n=== Validacao 2025 concluida ===")
|
||||
print("\n=== Validação 2025 concluída ===")
|
||||
print(metricas.to_string(index=False))
|
||||
print("\nArquivos gerados:")
|
||||
for path in saida["arquivos"]:
|
||||
|
||||
Reference in New Issue
Block a user