Initial project import
This commit is contained in:
57
scripts/_arquivados/validar_2025.py
Normal file
57
scripts/_arquivados/validar_2025.py
Normal file
@@ -0,0 +1,57 @@
|
||||
"""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()
|
||||
Reference in New Issue
Block a user