# Changelog Todas as versões significativas do Arara OAMRP devem ser registradas aqui. O `LOG.md` guarda o diário operacional detalhado; este arquivo resume mudanças por versão. Formato: ```text ## v ### Adicionado / Alterado / Corrigido / Removido - Descrição objetiva. ``` --- ## v0.2 — VTO — 2026-06 ### Adicionado - Diretório `software/` com o primeiro protótipo `software/oamrp_v1.py`. - Modelo MIP compacto em PuLP para atribuição de aeronaves a missões opcionais. - Regras de `.gitignore` para caches Python. ### Alterado - Estrutura de dados reorganizada para `db/raw/`, `db/pre_process/` e `db/processed/`. - Documentação atualizada para refletir a separação entre dados (`db/`) e modelos (`software/`). - Nome técnico do projeto padronizado como Arara OAMRP nos documentos principais. --- ## v0.1 — VTO — 2026-06 ### Adicionado - Repositório Git inicial. - Estrutura de dados com `raw/`, `pre_process/` e `processed/`. - Arquivo `README.md` na raiz com guia de uso do repositório. - Arquivo `CONTEXTO.md` com orientações permanentes do projeto. - Arquivo `LOG.md` com rastreabilidade operacional por data, hora e tag de autor. - Pré-processamento inicial do relatório de ciclo de inspeções do C-105 matrícula 2805. - Saídas intermediárias em texto, JSON e CSV. - Campos discretos para `zera_tso`, letra, nível, duração, horas de voo, meses contínuos e pousos. - Documentação em `docs/about.md`, `docs/authors.md` e `docs/changelog.md`. ### Alterado - Projeto renomeado para `arara_oarmp`. - Repositório remoto migrado para `https://git.ppgao.ita.br/vitorcesavc/arara_oarmp.git`. - Documentação reorganizada para separar guia inicial, contexto, autoria, histórico de versão e log operacional. ### Corrigido - Interpretação da coluna `Zera TSO`, que passou a ser tratada como coluna única. - Mapeamento dos níveis `B`, `P` e `O` para Base, Parque e Orgânico. ### Observações - O parser atual foi calibrado para o primeiro PDF processado. - A grafia original do documento fonte foi preservada, inclusive ocorrências de `INPEÇÃO`. ## v0.3 - VTO - 2026-06 ### Adicionado - Pre-processamento da `Planilha 2025.xlsx` para registro de voo limpo. - Saidas em CSV/XLSX sem mesclas e CSV OAMRP com `id,orig,dest,partida_utc,chegada_utc,prioridade`. - Resumo JSON com contagens, campos faltantes e criterios de conversao. ### Alterado - Criado arquivo final `db/processed/registro_voo_2025.csv`. ### Observacoes - `SEGMTO` foi preservado da planilha original; cruzamento de 00Z foi registrado em campo separado. - Colunas entre `REAL` e `COM2` foram descartadas. ## v0.3.1 - VTO - 2026-06 ### Alterado - Registro de voo 2025 regenerado removendo a linha original 793, aeronave 2806. - Consolidado passou para 1267 trechos e registro limpo para 1420 linhas. - Documentacao atualizada em `README.md`, `docs/about.md`, `LOG.md` e relatorio de validacao. ### Observacoes - A remocao foi aplicada no script de pre-processamento para manter reprodutibilidade. ## v0.7 — VTO — 2026-06 ### Corrigido - Bug crítico de conservação de fluxo em nós de inspeção (`oamrp_v3.py`): o solver criava unidades de fluxo fantasma nesses nós, fazendo o relatório exibir 50/50 enquanto o CSV real tinha apenas 16 missões cobertas. Corrigido adicionando C2 para nós `tipo == "inspecao"`. - Bug de restrição C6 Fase 1 simplificada removida: somava horas totais sem respeitar resets de inspeção, tornando EVAMs 2809 e 2811 artificialmente ociosas. As variáveis `H[k,seq,nid]` com reset já impõem o limite corretamente. ### Adicionado - Flag `--aleatorio` na CLI: sorteia `f0` entre 10% e 90% de `F_max` por aeronave e tipo de inspeção. - Tabela OFRAG em `db/processed/ofrag.csv` com 50 ordens sintéticas (prioridades 1–5, tipo de missão, OM). - Script `software/gerar_ofrag.py` para gerar ou regen a tabela OFRAG de forma reprodutível. - Flag `--ofrag` na CLI: carrega prioridades do CSV ao gerar missões sintéticas. - Visualização interativa `db/processed/mapa_rotas.html` via Folium, com uma camada por aeronave, missões não cumpridas tracejadas e popup com detalhes. - Script `software/visualizar_resultado.py` para gerar o mapa a partir do CSV de resultado. ### Alterado - Nomenclatura alinhada com Al-Thani (2016): `lrt_h` → `f_max`; `horas_iniciais` → `f0`; `orcamento_h()` → `lrt_inicial()`; `horas_iniciais_aleatorias()` → `gerar_f0_aleatorio()`; `carregar_horas_iniciais()` → `carregar_f0()`; CLI `--horas-iniciais` → `--f0`. - Relatório imprime `F_max=`, `f0=` e `LRT_ini=` para cada aeronave, alinhado com a formulação do artigo de referência. ### Resultado validado Rodada `--sintetico --seed 42 --aleatorio --ofrag db/processed/ofrag.csv` → 50/50 missões cumpridas, solver CBC Optimal, todas as 4 EVAMs com voos e ferry. --- ## v0.6 - VTO - 2026-06 ### Adicionado - Gerador de missões sintéticas cross-base (`gerar_missoes_sinteticas()`): 50 missões entre 10 bases com durações calculadas via haversine ÷ velocidade C-105 (430 km/h); flag `--sintetico`, `--n-missoes`, `--n-evam` na CLI. - Fase 3: arcos de ferry em `construir_rede()` — arcos `inicio`, `missao_missao`, `missao_insp` e `insp_missao` agora permitem bases distintas com tempo de ferry calculado automaticamente. - Ferry consome horas de célula no relógio de inspeção (C6: `carga = v.carga_h + a.horas_ferry`). - Relatório imprime segmentos `[FERRY base1->base2 Xh]` na linha do tempo de cada aeronave. - Resultado `db/processed/resultado_oamrp_sintetico.csv` para 50 missões sintéticas. ### Alterado - Dicionário `BASES_COORDS` com coordenadas (lat, lon) das 10 bases operacionais do C-105. ## v0.5 - VTO - 2026-06 ### Adicionado - Modelo `software/oamrp_v3.py` — reescrita do zero com rede espaço-tempo (No/Arco) e variável unificada `y[k,arco]`. - Fase 1 (C1–C6): fluxo de conservação, cobertura de missões, restrição de voo ativo, orçamento de horas por inspeção. - Fase 2 (C7–C11): nós e arcos de inspeção na rede; variáveis `H[k,i,nid]` para relógio de horas com reset; C9 downtime; C11 slot único via variáveis disjuntivas `oo`. - Documento `HANDOFF_arara_oamrp.md` com formulação matemática, decisões de calibração (Q1–Q5) e plano de build incremental. - Resultado `db/processed/resultado_oamrp_v3.csv` para janeiro/2025. ### Alterado - TAT corrigido para 1,5h (era 1,0h em v2). - Top-10 bases por frequência no registro de voo 2025 (Q4). - Missões EVAM marcadas como obrigatórias (Q2). - Objetivo L2 definido como maximizar horas voadas (= minimizar folga ao fim do horizonte mensal) (Q3). ### Corrigido - Bug de escopo de arco: arcos de início/fim agora carregam `aeronave_id` e só entram na variável `y` do aircraft correto. - Bug `NameError tat_h` em C9b: substituído pela constante global `TAT_H`. - Bug `AttributeError` em `escrever_resultado`: filtro por `n.tipo == "missao"` antes de acessar `n.missao`. ## v0.4 - VTO - 2026-06 ### Adicionado - Modelo `software/oamrp_v2.py` para rodar o OAMRP com o registro de voo 2025 consolidado. - Resultado inicial `db/processed/resultado_oamrp_jan_2025.csv`. ### Observacoes - Rodada padrao usa janeiro/2025, aeronaves reais `2800`, `2803`, `2809` e `2811`, base inicial provisoria `SBMN`, base de manutencao `SBMN` e prioridade uniforme 1. - Primeira execucao retornou solucao otima com 50 de 61 missoes cumpridas.