- 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>
4.3 KiB
Contexto do Projeto — OARMP
Origem e motivação
O OARMP nasceu da necessidade de apoiar o planejamento de emprego da frota de aeronaves C-105 Amazonas no âmbito do CEAO 809. A gestão manual da escala de voo — realizada em planilhas — não garante o respeito sistemático aos intervalos de manutenção (TTM), o que pode resultar em aeronaves com check vencido, indisponibilidade não planejada ou perda desnecessária de horas de TTM.
O sistema automatiza a atribuição de aeronaves a missões, respeitando os checks programados e minimizando o desperdício de horas de vida útil de manutenção.
Contexto operacional
Aeronaves
A frota considerada é composta por aeronaves C-105 Amazonas (Embraer KC-390 regional), operadas no transporte logístico e de pessoal na região amazônica. Cada aeronave possui um histórico acumulado de horas de voo (FH Totais) que determina a proximidade ao próximo check.
Checks de manutenção
Os checks são definidos por thresholds cumulativos de FH (ex: 300 h, 400 h, 600 h, 900 h). Quando uma aeronave atinge o threshold de seu ciclo atual, ela deve ser submetida ao check correspondente antes de continuar voando. A manutenção é realizada exclusivamente nas bases habilitadas (campo IS_MAINTENANCE_BASE = 1 em AIRPORTS.csv).
OFRAGs
Um OFRAG (fragmento de voo) é um conjunto de etapas que parte da base de manutenção e retorna a ela. Essa restrição é fundamental: apenas OFRAGs com início e fim na base podem ser alocados no problema de otimização, pois garantem que a aeronave pode ser submetida a check entre missões.
Escala de voo
A escala é fornecida no formato da planilha operacional da unidade, com etapas identificadas por data, aeroportos de partida/chegada, horários e número de OFRAG. O sistema aceita datas no formato DD/MM/AAAA ou no formato legado DD/mon (ex: 15/jan).
Problema de otimização
O problema é modelado como Set Partitioning sobre o conjunto de OFRAGs:
- Cada OFRAG deve ser coberto por exatamente uma aeronave
- Cada aeronave executa no máximo uma rota (sequência de OFRAGs)
- A rota deve ser TTM-viável: a qualquer ponto, as FH acumuladas desde o último check não excedem o TTM do ciclo atual
- A função objetivo minimiza a perda total de TTM (horas de TTM não utilizadas quando a manutenção é antecipada)
A solução é obtida por Column Generation (geração de colunas) combinada com Branch & Bound (PuLP/CBC), permitindo explorar um espaço de rotas potencialmente exponencial de forma eficiente.
Decisões de projeto
| Decisão | Justificativa |
|---|---|
| Set Partitioning (ao invés de Set Covering) | Garante que cada missão seja atribuída a exatamente uma aeronave, sem ambiguidade |
| Column Generation | O número de rotas viáveis é exponencial; CG constrói apenas colunas lucrativas |
| Pricing por DP (label-setting) | Subproblema é um shortest-path com restrições de recursos (TTM), adequado para DP em DAG |
| TAT mínimo (padrão 60 min) | Garante tempo mínimo de preparação entre OFRAGs consecutivos na mesma aeronave |
| Penalidade Big-M por OFRAG descoberto | Permite solução mesmo quando a cobertura total é inviável (ex: mais OFRAGs do que aeronaves disponíveis) |
Limitações conhecidas
- O modelo considera apenas um evento de manutenção por ciclo de check; múltiplos checks consecutivos são tratados como ciclos independentes
- A duração da manutenção é fixa por tipo de check; variações logísticas (falta de peças, disponibilidade de hangar) não são modeladas
- OFRAGs que não partem e chegam à base de manutenção são excluídos do problema (não podem ser alocados)
- O solver CBC tem desempenho limitado para instâncias muito grandes; o parâmetro
mip_time_limit_secondscontrola o tempo máximo
Arquivos de referência
| Arquivo | Conteúdo |
|---|---|
raw/AERONAVES.csv |
Frota com FH acumuladas |
raw/CHECKS.csv |
Thresholds e durações dos checks |
raw/AIRPORTS.csv |
Aeroportos e bases de manutenção |
raw/ESCALA DE VOO MODELO 1.csv |
Escala de missões |
raw/ICA 66-31 2023.pdf |
Instrução regulatória de aeronavegabilidade (referência) |
raw/Airline Operations and Scheduling*.pdf |
Referência bibliográfica principal (Bazargan, 2010) |