Corrige modelo OAMRP v3 e alinha nomenclatura com Al-Thani (2016)

Correções ao modelo:
- Adiciona conservação de fluxo em nós de inspeção (bug que permitia
  criação/destruição de unidades de fluxo, inflando cobertura para 50/50
  sem atribuição real de rotas)
- Remove restrição C6 simplificada que somava horas totais sem respeitar
  resets de inspeção, tornando 2809/2811 artificialmente ociosos

Nomenclatura alinhada ao Al-Thani (2016):
- InspecaoParam.lrt_h → f_max  (F do artigo: batente máximo legal)
- Aeronave.horas_iniciais → f0  (f_k: horas acumuladas no início)
- orcamento_h() → lrt_inicial() (LRT = F_max − f0)
- horas_iniciais_aleatorias() → gerar_f0_aleatorio()
- carregar_horas_iniciais() → carregar_f0()
- CLI --horas-iniciais → --f0

Novos arquivos:
- software/gerar_ofrag.py: gera tabela de OFRAGs com prioridades 1-5
- software/visualizar_resultado.py: mapa Folium interativo de rotas
- db/processed/ofrag.csv: 50 OFRAGs sintéticas (seed 42)
- db/processed/mapa_rotas.html: mapa gerado da última rodada

Resultado com --sintetico --aleatorio --ofrag: 50/50 missões cumpridas
(antes: 30/50 sem ferry, 7/50 com bug de fluxo)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Cesa-V
2026-06-16 00:50:53 -03:00
parent 7cd7458565
commit f0d72f8189
6 changed files with 2500 additions and 88 deletions

51
db/processed/ofrag.csv Normal file
View File

@@ -0,0 +1,51 @@
id_ofrag,missao_id,om,orig,dest,prioridade,tipo_missao,observacao
OFRAG-2025-001,SIM_001_SBMN_SBMY,1,SBMN,SBMY,1,Reabastecimento,
OFRAG-2025-002,SIM_002_SBBE_SBTT,2,SBBE,SBTT,1,Pessoal,
OFRAG-2025-003,SIM_003_SBMN_SBPV,3,SBMN,SBPV,1,Médico,EVAM — execução obrigatória
OFRAG-2025-004,SIM_004_SBMN_SBUA,4,SBMN,SBUA,1,Logística,EVAM — execução obrigatória
OFRAG-2025-005,SIM_005_SBSN_SBTS,5,SBSN,SBTS,2,Reabastecimento,
OFRAG-2025-006,SIM_006_SBSN_SBBE,6,SBSN,SBBE,2,Pessoal,
OFRAG-2025-007,SIM_007_SBTS_SBMN,7,SBTS,SBMN,2,Reconhecimento,
OFRAG-2025-008,SIM_008_SBBE_SBTS,8,SBBE,SBTS,4,Reconhecimento,
OFRAG-2025-009,SIM_009_SBMY_SBTS,9,SBMY,SBTS,2,Logística,
OFRAG-2025-010,SIM_010_SBTT_SBMN,10,SBTT,SBMN,1,Logística,
OFRAG-2025-011,SIM_011_SBBE_SBSN,11,SBBE,SBSN,1,Logística,
OFRAG-2025-012,SIM_012_SWBC_SBSN,12,SWBC,SBSN,3,Logística,
OFRAG-2025-013,SIM_013_SBMN_SBBV,13,SBMN,SBBV,2,Reconhecimento,
OFRAG-2025-014,SIM_014_SBMN_SBTS,14,SBMN,SBTS,1,Logística,
OFRAG-2025-015,SIM_015_SBMN_SBPV,15,SBMN,SBPV,1,Médico,EVAM — execução obrigatória
OFRAG-2025-016,SIM_016_SBPV_SBMN,16,SBPV,SBMN,1,Logística,
OFRAG-2025-017,SIM_017_SBSN_SBMN,17,SBSN,SBMN,4,Reabastecimento,
OFRAG-2025-018,SIM_018_SBSN_SBBV,18,SBSN,SBBV,1,Reconhecimento,
OFRAG-2025-019,SIM_019_SBBV_SBMN,19,SBBV,SBMN,2,Logística,
OFRAG-2025-020,SIM_020_SWBC_SBTS,20,SWBC,SBTS,4,Pessoal,
OFRAG-2025-021,SIM_021_SBMN_SBPV,21,SBMN,SBPV,1,Médico,EVAM — execução obrigatória
OFRAG-2025-022,SIM_022_SBMN_SBBV,22,SBMN,SBBV,1,Reabastecimento,
OFRAG-2025-023,SIM_023_SBBV_SWBC,23,SBBV,SWBC,3,Reconhecimento,
OFRAG-2025-024,SIM_024_SBMY_SBBV,24,SBMY,SBBV,1,Pessoal,
OFRAG-2025-025,SIM_025_SWBC_SBMN,25,SWBC,SBMN,3,Logística,
OFRAG-2025-026,SIM_026_SBUA_SBTT,26,SBUA,SBTT,3,Reabastecimento,
OFRAG-2025-027,SIM_027_SBTS_SBMY,27,SBTS,SBMY,1,Pessoal,
OFRAG-2025-028,SIM_028_SBMN_SBTT,28,SBMN,SBTT,2,Logística,
OFRAG-2025-029,SIM_029_SBTT_SBSN,29,SBTT,SBSN,2,Reconhecimento,
OFRAG-2025-030,SIM_030_SWBC_SBSN,30,SWBC,SBSN,2,Logística,
OFRAG-2025-031,SIM_031_SBMN_SBTT,31,SBMN,SBTT,2,Reabastecimento,
OFRAG-2025-032,SIM_032_SBMN_SBBE,32,SBMN,SBBE,5,Reabastecimento,
OFRAG-2025-033,SIM_033_SBBV_SBSN,33,SBBV,SBSN,1,Reconhecimento,
OFRAG-2025-034,SIM_034_SBTS_SBMN,34,SBTS,SBMN,2,Logística,
OFRAG-2025-035,SIM_035_SBTT_SBMN,35,SBTT,SBMN,1,Logística,
OFRAG-2025-036,SIM_036_SBPV_SWBC,36,SBPV,SWBC,3,Logística,
OFRAG-2025-037,SIM_037_SBBV_SBMN,37,SBBV,SBMN,3,Logística,
OFRAG-2025-038,SIM_038_SBBV_SBBE,38,SBBV,SBBE,2,Pessoal,
OFRAG-2025-039,SIM_039_SBSN_SBMN,39,SBSN,SBMN,1,Logística,
OFRAG-2025-040,SIM_040_SBSN_SBMN,40,SBSN,SBMN,4,Reconhecimento,
OFRAG-2025-041,SIM_041_SBBE_SBTS,41,SBBE,SBTS,1,Reabastecimento,
OFRAG-2025-042,SIM_042_SBBE_SBSN,42,SBBE,SBSN,5,Reconhecimento,
OFRAG-2025-043,SIM_043_SBMN_SBPV,43,SBMN,SBPV,4,Médico,
OFRAG-2025-044,SIM_044_SBBE_SBPV,44,SBBE,SBPV,3,Pessoal,
OFRAG-2025-045,SIM_045_SBTS_SBMN,45,SBTS,SBMN,4,Reabastecimento,
OFRAG-2025-046,SIM_046_SBMN_SBUA,46,SBMN,SBUA,3,Reconhecimento,
OFRAG-2025-047,SIM_047_SWBC_SBTS,47,SWBC,SBTS,2,Reabastecimento,
OFRAG-2025-048,SIM_048_SBSN_SBUA,48,SBSN,SBUA,1,Médico,
OFRAG-2025-049,SIM_049_SBMN_SBMY,49,SBMN,SBMY,4,Pessoal,
OFRAG-2025-050,SIM_050_SBTT_SBPV,50,SBTT,SBPV,1,Logística,EVAM — execução obrigatória
1 id_ofrag missao_id om orig dest prioridade tipo_missao observacao
2 OFRAG-2025-001 SIM_001_SBMN_SBMY 1 SBMN SBMY 1 Reabastecimento
3 OFRAG-2025-002 SIM_002_SBBE_SBTT 2 SBBE SBTT 1 Pessoal
4 OFRAG-2025-003 SIM_003_SBMN_SBPV 3 SBMN SBPV 1 Médico EVAM — execução obrigatória
5 OFRAG-2025-004 SIM_004_SBMN_SBUA 4 SBMN SBUA 1 Logística EVAM — execução obrigatória
6 OFRAG-2025-005 SIM_005_SBSN_SBTS 5 SBSN SBTS 2 Reabastecimento
7 OFRAG-2025-006 SIM_006_SBSN_SBBE 6 SBSN SBBE 2 Pessoal
8 OFRAG-2025-007 SIM_007_SBTS_SBMN 7 SBTS SBMN 2 Reconhecimento
9 OFRAG-2025-008 SIM_008_SBBE_SBTS 8 SBBE SBTS 4 Reconhecimento
10 OFRAG-2025-009 SIM_009_SBMY_SBTS 9 SBMY SBTS 2 Logística
11 OFRAG-2025-010 SIM_010_SBTT_SBMN 10 SBTT SBMN 1 Logística
12 OFRAG-2025-011 SIM_011_SBBE_SBSN 11 SBBE SBSN 1 Logística
13 OFRAG-2025-012 SIM_012_SWBC_SBSN 12 SWBC SBSN 3 Logística
14 OFRAG-2025-013 SIM_013_SBMN_SBBV 13 SBMN SBBV 2 Reconhecimento
15 OFRAG-2025-014 SIM_014_SBMN_SBTS 14 SBMN SBTS 1 Logística
16 OFRAG-2025-015 SIM_015_SBMN_SBPV 15 SBMN SBPV 1 Médico EVAM — execução obrigatória
17 OFRAG-2025-016 SIM_016_SBPV_SBMN 16 SBPV SBMN 1 Logística
18 OFRAG-2025-017 SIM_017_SBSN_SBMN 17 SBSN SBMN 4 Reabastecimento
19 OFRAG-2025-018 SIM_018_SBSN_SBBV 18 SBSN SBBV 1 Reconhecimento
20 OFRAG-2025-019 SIM_019_SBBV_SBMN 19 SBBV SBMN 2 Logística
21 OFRAG-2025-020 SIM_020_SWBC_SBTS 20 SWBC SBTS 4 Pessoal
22 OFRAG-2025-021 SIM_021_SBMN_SBPV 21 SBMN SBPV 1 Médico EVAM — execução obrigatória
23 OFRAG-2025-022 SIM_022_SBMN_SBBV 22 SBMN SBBV 1 Reabastecimento
24 OFRAG-2025-023 SIM_023_SBBV_SWBC 23 SBBV SWBC 3 Reconhecimento
25 OFRAG-2025-024 SIM_024_SBMY_SBBV 24 SBMY SBBV 1 Pessoal
26 OFRAG-2025-025 SIM_025_SWBC_SBMN 25 SWBC SBMN 3 Logística
27 OFRAG-2025-026 SIM_026_SBUA_SBTT 26 SBUA SBTT 3 Reabastecimento
28 OFRAG-2025-027 SIM_027_SBTS_SBMY 27 SBTS SBMY 1 Pessoal
29 OFRAG-2025-028 SIM_028_SBMN_SBTT 28 SBMN SBTT 2 Logística
30 OFRAG-2025-029 SIM_029_SBTT_SBSN 29 SBTT SBSN 2 Reconhecimento
31 OFRAG-2025-030 SIM_030_SWBC_SBSN 30 SWBC SBSN 2 Logística
32 OFRAG-2025-031 SIM_031_SBMN_SBTT 31 SBMN SBTT 2 Reabastecimento
33 OFRAG-2025-032 SIM_032_SBMN_SBBE 32 SBMN SBBE 5 Reabastecimento
34 OFRAG-2025-033 SIM_033_SBBV_SBSN 33 SBBV SBSN 1 Reconhecimento
35 OFRAG-2025-034 SIM_034_SBTS_SBMN 34 SBTS SBMN 2 Logística
36 OFRAG-2025-035 SIM_035_SBTT_SBMN 35 SBTT SBMN 1 Logística
37 OFRAG-2025-036 SIM_036_SBPV_SWBC 36 SBPV SWBC 3 Logística
38 OFRAG-2025-037 SIM_037_SBBV_SBMN 37 SBBV SBMN 3 Logística
39 OFRAG-2025-038 SIM_038_SBBV_SBBE 38 SBBV SBBE 2 Pessoal
40 OFRAG-2025-039 SIM_039_SBSN_SBMN 39 SBSN SBMN 1 Logística
41 OFRAG-2025-040 SIM_040_SBSN_SBMN 40 SBSN SBMN 4 Reconhecimento
42 OFRAG-2025-041 SIM_041_SBBE_SBTS 41 SBBE SBTS 1 Reabastecimento
43 OFRAG-2025-042 SIM_042_SBBE_SBSN 42 SBBE SBSN 5 Reconhecimento
44 OFRAG-2025-043 SIM_043_SBMN_SBPV 43 SBMN SBPV 4 Médico
45 OFRAG-2025-044 SIM_044_SBBE_SBPV 44 SBBE SBPV 3 Pessoal
46 OFRAG-2025-045 SIM_045_SBTS_SBMN 45 SBTS SBMN 4 Reabastecimento
47 OFRAG-2025-046 SIM_046_SBMN_SBUA 46 SBMN SBUA 3 Reconhecimento
48 OFRAG-2025-047 SIM_047_SWBC_SBTS 47 SWBC SBTS 2 Reabastecimento
49 OFRAG-2025-048 SIM_048_SBSN_SBUA 48 SBSN SBUA 1 Médico
50 OFRAG-2025-049 SIM_049_SBMN_SBMY 49 SBMN SBMY 4 Pessoal
51 OFRAG-2025-050 SIM_050_SBTT_SBPV 50 SBTT SBPV 1 Logística EVAM — execução obrigatória