Files
arara_oarmp/docs/changelog.md
Cesa-V 4d8554df38 Atualiza documentacao para refletir sessao 2026-06-16 (v0.7)
- LOG.md: entradas para bugs corrigidos (C2 inspeção, C6 removida),
  renomeação Al-Thani, OFRAG, visualização e rodada 50/50
- docs/changelog.md: versão v0.7 com correções, adições e resultado validado
- docs/about.md: seção v3 com rede espaço-tempo, nomenclatura Al-Thani,
  restrições C1-C11 e scripts auxiliares; v1 mantido como referência histórica
- README.md: estado atual aponta oamrp_v3 como modelo ativo, com comandos

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 01:00:48 -03:00

165 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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<versão> — <Autor ou tag> — <YYYY-MM>
### 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 15, 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 (C1C6): fluxo de conservação, cobertura de missões, restrição de voo ativo, orçamento de horas por inspeção.
- Fase 2 (C7C11): 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 (Q1Q5) 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.