Cesa-V f0d72f8189 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>
2026-06-16 00:50:53 -03:00
2026-06-15 15:24:39 -03:00

Arara OAMRP

Este repositório organiza os arquivos, processamentos e protótipos do projeto Arara OAMRP do Esquadrão Arara, em Manaus.

A ideia é construir, em conjunto, uma base confiável para encaixar missões, aeronaves e manutenções. O repositório serve como lugar único para guardar documentos originais, registrar decisões, transformar relatórios em dados utilizáveis e manter um histórico claro do que foi feito por cada colaborador.

O que é um repositório

Um repositório é uma pasta controlada pelo Git. Ele guarda os arquivos do projeto e também o histórico de alterações.

O Gitea do PPGAO/ITA é o site onde esse repositório fica hospedado de forma privada, para que os colaboradores possam acessar, baixar, atualizar e enviar contribuições.

Na prática:

  • o Git mostra o que mudou;
  • o Gitea permite compartilhar o projeto;
  • os commits são registros das alterações feitas;
  • o LOG.md explica o motivo e o contexto das mudanças importantes.

Estrutura do projeto

arara_oarmp/
  db/
    raw/
    pre_process/
    processed/
  software/
  docs/
  CONTEXTO.md
  LOG.md
  README.md
  • db/raw/: documentos originais. Não editar esses arquivos diretamente.
  • db/pre_process/: scripts e arquivos intermediários gerados a partir dos documentos originais.
  • db/processed/: arquivos finais, limpos e prontos para análise ou uso.
  • software/: modelos e protótipos executáveis, incluindo o modelo MIP inicial de roteamento.
  • docs/: documentação técnica, autoria e histórico de versões.
  • CONTEXTO.md: regras, combinados e orientações permanentes do projeto.
  • LOG.md: histórico rastreável das ações feitas no projeto.
  • README.md: este guia inicial.

Colaboradores

Usamos tags curtas para identificar quem fez cada alteração relevante:

  • VTO: Vitor Cesa.
  • GNR: Generoso.
  • JOM: João Marcos.

Sempre que alguém fizer uma mudança importante, deve registrar no LOG.md com data, hora, tag do autor, ação, arquivos e observações.

Como usar pelo site do Gitea

Este caminho é bom para quem só quer ver arquivos, baixar documentos ou conferir o histórico.

  1. Abra o repositório no Gitea do PPGAO/ITA.
  2. Entre nas pastas para ver os arquivos.
  3. Use db/raw/ para consultar documentos originais.
  4. Use db/pre_process/ para consultar arquivos intermediários.
  5. Use db/processed/ para consultar dados finais quando existirem.
  6. Abra o LOG.md para entender o que já foi feito.
  7. Abra o CONTEXTO.md para ver os combinados do projeto.

Para baixar um arquivo pelo site:

  1. Clique no arquivo.
  2. Clique em Download raw file ou no botão de download.
  3. Salve no computador.

Documentação

  • docs/about.md: descrição técnica, fluxo de dados, limitações e oportunidades de melhoria.
  • docs/authors.md: autoria, colaboradores e regras de contribuição.
  • docs/changelog.md: histórico resumido de versões significativas.
  • LOG.md: diário operacional detalhado.

Como usar no computador

Este caminho é para quem vai mexer nos arquivos e devolver alterações ao Gitea.

Primeiro, instale o Git:

git --version

Se o comando não funcionar, o Git ainda não está instalado.

Depois, clone o repositório:

git clone https://git.ppgao.ita.br/vitorcesavc/arara_oarmp.git
cd arara_oarmp

Antes de começar a trabalhar, atualize sua cópia:

git pull

Depois de alterar arquivos, veja o que mudou:

git status

Adicione os arquivos modificados:

git add .

Crie um commit com uma mensagem curta:

git commit -m "Descreva a alteração feita"

Envie para o Gitea:

git push

Fluxo recomendado de trabalho

  1. Rode git pull antes de começar.
  2. Coloque documentos novos em db/raw/.
  3. Gere arquivos intermediários em db/pre_process/.
  4. Coloque resultados finais em db/processed/.
  5. Atualize o LOG.md.
  6. Faça commit.
  7. Rode git push.

Cuidados importantes

  • Não editar arquivos originais dentro de db/raw/.
  • Não apagar arquivos de outros colaboradores sem combinar.
  • Não subir arquivos temporários do Office, como arquivos começando com ~$.
  • Não colocar senhas, tokens ou informações pessoais desnecessárias no repositório.
  • Preferir nomes de arquivo descritivos, com tipo do documento, aeronave, matrícula e data quando possível.
  • Registrar no LOG.md qualquer decisão que afete os dados.

Estado atual

Já existe um pré-processamento do relatório de ciclo de inspeções da aeronave C-105 matrícula 2805, com data de relatório 2026-06-15.

Também existe um primeiro protótipo em software/oamrp_v1.py, que formula um modelo MIP compacto em PuLP para atribuir aeronaves a missões de transporte, respeitando continuidade espacial/temporal, turnaround mínimo e limite de horas até inspeção.

Arquivos principais:

db/raw/relatorio_ciclo_inspecoes_c105_2805_2026-06-15.pdf
db/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15/preprocess_pdf.py
db/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_texto.txt
db/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.json
db/pre_process/relatorio_ciclo_inspecoes_c105_2805_2026-06-15/relatorio_ciclo_inspecoes_c105_2805_2026-06-15_inspecoes.csv
software/oamrp_v1.py

Esse processamento extraiu 18 inspeções e separou campos como inspeção, referência, vencimento, TSO, letra, nível, duração, intervalo por horas de voo, meses contínuos e pousos.

Atualizacao - registro de voo 2025

A Planilha 2025.xlsx foi pre-processada a partir de db/raw/ sem alterar o arquivo original.

Arquivos gerados:

db/pre_process/registro_voo_2025/preprocess_planilha_2025.py
db/pre_process/registro_voo_2025/registro_voo_2025_limpo.csv
db/pre_process/registro_voo_2025/registro_voo_2025_limpo.xlsx
db/pre_process/registro_voo_2025/registro_voo_2025_consolidado.csv
db/pre_process/registro_voo_2025/missoes_oamrp_2025.csv
db/pre_process/registro_voo_2025/missoes_oamrp_2025_consolidado.csv
db/pre_process/registro_voo_2025/resumo_registro_voo_2025.json
db/pre_process/registro_voo_2025/validacao_registro_voo_2025.md
db/processed/registro_voo_2025.csv
db/processed/registro_voo_2025_consolidado.csv

O consolidado trata ROTA como marcador de transicao, nao como localidade operacional, e remove a linha original 793 da aeronave 2806 dos artefatos processados.

Modelo OAMRP v2

O arquivo software/oamrp_v2.py executa a primeira rodada do modelo com dados reais consolidados de 2025. Por padrao, ele usa janeiro/2025, as aeronaves 2800, 2803, 2809 e 2811, e grava:

db/processed/resultado_oamrp_jan_2025.csv

Para executar:

python software/oamrp_v2.py

A rodada inicial de janeiro/2025 foi resolvida como otima pelo CBC, com 50 de 61 missoes cumpridas.

Description
Modelo de otimizacao (MIP) para roteamento e manutencao de aeronaves do Esquadrao Arara (C-105) - Operational Aircraft Maintenance Routing Problem (OAMRP), baseado em Al-Thani et al. (2016).
Readme 1.8 MiB
Languages
HTML 52.7%
Python 47.3%