Files
Escalante-Pastor/scripts/_arquivados/validar_2025.py
2026-06-26 18:07:04 -03:00

58 lines
1.9 KiB
Python

"""Executa a validacao retrospectiva com voos de 2025."""
from __future__ import annotations
import argparse
import sys
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(BASE_DIR))
from src.planejador_missao.validacao import (
carregar_voos_2025,
criar_modelo_voos_2025,
otimizar_equalizacao_50,
salvar_relatorio_validacao,
)
def main() -> None:
parser = argparse.ArgumentParser(description="Valida o planejador com voos historicos de 2025.")
parser.add_argument("--meta", type=float, default=50.0, help="Meta de horas usada na equalizacao.")
parser.add_argument("--tempo-limite", type=float, default=180.0, help="Tempo limite do resolvedor MILP, em segundos.")
parser.add_argument("--gap", type=float, default=0.05, help="Gap relativo aceitavel para encerrar o MILP.")
args = parser.parse_args()
entrada = BASE_DIR / "dados" / "validacao" / "voos_2025.csv"
criar_modelo_voos_2025(entrada)
voos = carregar_voos_2025(entrada)
if voos.empty:
print("Base de validacao ainda vazia.")
print(f"Preencha o arquivo: {entrada}")
print("Colunas esperadas: data,aeronave,tipo_escala,tripulante,funcao,oi,horas_voadas,sbv")
return
resultado = otimizar_equalizacao_50(
BASE_DIR,
voos,
meta_horas=args.meta,
tempo_limite_segundos=args.tempo_limite,
gap_relativo=args.gap,
)
arquivo = salvar_relatorio_validacao(BASE_DIR, resultado, meta_horas=args.meta)
print("\n=== Validacao 2025 concluida ===")
print(f"Meta de equalizacao: {args.meta:g} horas")
print(f"Voos/slots avaliados: {len(resultado['slots'])}")
print(f"Tripulantes comparados: {len(resultado['comparativo'])}")
print(f"Relatorio: {arquivo}")
print(f"Solver: {resultado['status_solver']['mensagem']}")
print("\nMetricas:")
print(resultado["metricas"].to_string(index=False))
if __name__ == "__main__":
main()