- Complete routing engine: ingest, optimizer (CG+B&B), maintenance monitor, metrics, pipeline, quality checks - Streamlit dashboard with Input/Output tab structure, editable data editors, interactive Folium map with satellite layer and maintenance base highlights, FH stacked bar chart with TTM availability - CSV data files: AERONAVES, CHECKS, AIRPORTS, ESCALA DE VOO - README, CONTEXTO and CHANGELOG added - Remove legacy pre_process scripts and raw binary files (PDFs/xlsx) - Update .gitignore to exclude outputs/, data/, raw/*.pdf, raw/*.xlsx Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
OARMP — Aircraft Routing & Maintenance Planning
Sistema de otimização de roteamento de aeronaves com planejamento integrado de manutenção, desenvolvido para o Curso de Especialização em Administração de Organizações (CEAO 809).
Visão geral
O OARMP resolve o problema de atribuição de aeronaves a fragmentos de voo (OFRAGs) respeitando as restrições de Time to Maintenance (TTM) de cada aeronave, minimizando as horas perdidas de TTM ao longo do planejamento.
Formulação matemática
Set Partitioning com Column Generation + Branch & Bound
Minimizar Σ_r c_r · x_r (perda total de TTM)
s.a. Σ_{r: j∈r} x_r = 1 ∀ j ∈ OFRAGs (cada OFRAG coberto exatamente uma vez)
Σ_{r: a(r)=a} x_r ≤ 1 ∀ a ∈ Aeronaves (uma rota por aeronave)
x_r ∈ {0, 1}
O subproblema de precificação (pricing) é resolvido por programação dinâmica (label-setting DP) sobre o DAG de OFRAGs ordenados por horário de partida.
Estrutura do projeto
arara_oarmp/
├── app/
│ └── dashboard.py # Interface Streamlit (entrada de dados + resultados)
├── raw/ # Dados de entrada (CSV)
│ ├── AERONAVES.csv
│ ├── CHECKS.csv
│ ├── AIRPORTS.csv
│ └── ESCALA DE VOO MODELO 1.csv
├── src/
│ └── routing_engine/
│ ├── config.py # Parâmetros e caminhos
│ ├── ingest.py # Leitura e normalização dos dados
│ ├── inspect_files.py # Detecção automática de colunas (sinônimos)
│ ├── network_generator.py # Grafo de adjacência entre OFRAGs
│ ├── optimizer.py # CG + B&B (PuLP/CBC)
│ ├── maintenance_monitor.py # Validação TTM e eventos de manutenção
│ ├── metrics.py # Tabelas e sumários de saída
│ ├── pipeline.py # Orquestração end-to-end
│ └── quality.py # Verificações de qualidade dos dados
├── scripts/ # Scripts auxiliares de inspeção e execução
├── outputs/ # Resultados gerados pelo pipeline
│ ├── schedules/
│ └── exports/
├── requirements.txt
└── run_pipeline.bat
Instalação
# Criar ambiente virtual
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # Linux/Mac
# Instalar dependências
pip install -r requirements.txt
Dependências principais
| Pacote | Uso |
|---|---|
pulp |
Formulação e resolução do MIP (solver CBC) |
pandas / numpy |
Manipulação de dados |
streamlit |
Dashboard interativo |
plotly |
Gráficos (Gantt, barras) |
folium + streamlit-folium |
Mapa interativo de rotas |
airportsdata |
Coordenadas geográficas de aeroportos por ICAO |
networkx |
Grafo de adjacência entre OFRAGs |
Execução
Via dashboard (recomendado)
streamlit run app/dashboard.py
Via script de linha de comando
python scripts/03_run_optimization_pipeline.py
# ou
run_pipeline.bat
Dados de entrada
Todos os arquivos ficam em raw/ com separador ;:
AERONAVES.csv
| Campo | Descrição |
|---|---|
| MATRICULA | Indicativo da aeronave |
| MODELO | Modelo (ex: C105) |
| FH TOTAIS | Horas de voo totais acumuladas |
CHECKS.csv
| Campo | Descrição |
|---|---|
| CHECKS | Nome do check |
| FH | Threshold cumulativo de FH para o check |
| TEMPO DE EXECUCAO (DIAS) | Duração do check em dias |
| LOCAL DE EXECUCAO | Código ICAO da base de manutenção |
AIRPORTS.csv
| Campo | Descrição |
|---|---|
| AIRPORT_CODE | Código ICAO |
| AIRPORT_NAME | Nome do aeroporto |
| IS_MAINTENANCE_BASE | 1 = base de manutenção |
ESCALA DE VOO MODELO 1.csv
Escala de missões com colunas: DATA, ETAPA, DEP, ARR, HORA_DEP, HORA_ARR, TEMPO_VOO, SEGMTO, MISSAO, OFRAG.
Formato de data aceito: DD/MM/AAAA ou DD/mon (ex: 15/jan).
Dashboard — abas
Entrada (📥 Input)
- Escala de Voo: tabela editável com adição/remoção de linhas
- Aeronaves: frota com FH totais e TAT mínimo
- Checks: thresholds e durações de manutenção
- Bases de Manutenção: aeroportos habilitados para check
Saída (📤 Output)
- Resumo: métricas gerais + diagrama de Gantt
- Escala com Atribuição: escala original com aeronave atribuída por OFRAG
- Manutenção e Aeronaves: eventos de manutenção, gráfico de FH por aeronave (FH iniciais + planejadas antes/após manutenção + TTM disponível)
- Frota: utilização percentual do TTM por aeronave
- Mapa: rotas por aeronave em mapa interativo (satélite Esri / CartoDB)
Conceitos-chave
OFRAG — Fragmento de voo: conjunto de etapas que sai e retorna à base de manutenção. Unidade de alocação do problema.
TTM (Time to Maintenance) — Horas de voo disponíveis até o próximo check obrigatório. Cada ciclo de check tem seu próprio TTM.
TTM Loss — Horas de TTM não utilizadas quando a manutenção é realizada antes de esgotar o ciclo (inevitável quando o próximo OFRAG excederia o limite).
TAT (Turnaround Time) — Tempo mínimo entre o pouso de um OFRAG e a decolagem do seguinte na mesma aeronave.