Documenta historico v1/v2/v3 no README com fases, limitacoes e nomenclatura
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
88
README.md
88
README.md
@@ -191,46 +191,60 @@ Parâmetros relevantes do modelo:
|
|||||||
| `--time-limit` | 300 | Limite de tempo do solver CBC (segundos) |
|
| `--time-limit` | 300 | Limite de tempo do solver CBC (segundos) |
|
||||||
| `--aleatorio` | — | Sorteia f0 aleatório entre 10%–90% de F_max |
|
| `--aleatorio` | — | Sorteia f0 aleatório entre 10%–90% de F_max |
|
||||||
|
|
||||||
Pré-processamentos disponíveis:
|
---
|
||||||
|
|
||||||
|
## Histórico dos modelos
|
||||||
|
|
||||||
|
### v1 — Protótipo inicial (`software/oamrp_v1.py`)
|
||||||
|
|
||||||
|
Primeiro protótipo do modelo MIP em PuLP. Estrutura simples de atribuição aeronave-missão sem rede espaço-tempo, sem inspeções e sem ferry. Serviu para validar a configuração do ambiente e a integração com o solver CBC.
|
||||||
|
|
||||||
|
- **Formulação:** atribuição direta, variáveis binárias por (aeronave, missão)
|
||||||
|
- **Restrições:** cobertura básica e continuidade de base
|
||||||
|
- **Sem:** janelas de tempo, inspeções, ferry, prioridades
|
||||||
|
- **Status:** protótipo histórico, não usar em produção
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### v2 — Dados reais de 2025 (`software/oamrp_v2.py`)
|
||||||
|
|
||||||
|
Primeira rodada com dados reais do registro de voo de janeiro/2025, pré-processados a partir da planilha original. Introduziu janelas de tempo (decolagem e chegada do CSV), TAT entre missões e prioridade uniforme.
|
||||||
|
|
||||||
|
- **Dados de entrada:** `db/processed/registro_voo_2025_consolidado.csv` (1 267 trechos, 1 420 linhas originais)
|
||||||
|
- **Resultado:** 50 de 61 missões cumpridas em janeiro/2025 (`db/processed/resultado_oamrp_jan_2025.csv`)
|
||||||
|
- **Limitação identificada:** os dados reais de jan/2025 eram predominantemente voos locais SBMN→SBMN, não exercitando roteamento cross-base nem inspeções
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
python software/oamrp_v2.py
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### v3 — Rede espaço-tempo completa (`software/oamrp_v3.py`) ← **modelo ativo**
|
||||||
|
|
||||||
|
Reescrita completa baseada em Al-Thani, Ben Ahmed & Haouari (2016). Introduziu a formulação por rede espaço-tempo com nós No e arcos Arco, inspeções com relógio de horas acumuladas e reset, arcos de ferry entre bases e missões sintéticas cross-base para validação de roteamento.
|
||||||
|
|
||||||
|
**Fases implementadas:**
|
||||||
|
|
||||||
|
| Fase | Restrições | Descrição |
|
||||||
|
|---|---|---|
|
||||||
|
| 1 | C1–C6 | Rede espaço-tempo, cobertura (Set Partitioning), conservação de fluxo, TAT |
|
||||||
|
| 2 | C7–C11 | Nós de inspeção, relógio H[k,i,n] com reset, downtime, slot único |
|
||||||
|
| 3 | Ferry | Arcos de ferry entre quaisquer bases (haversine ÷ 430 km/h), consome horas de célula |
|
||||||
|
|
||||||
|
**Nomenclatura alinhada com Al-Thani (2016):**
|
||||||
|
|
||||||
|
- `F_max` — batente fixo (intervalo máximo legal entre manutenções, ex: 300 h)
|
||||||
|
- `f0` — horas acumuladas no início do horizonte (estado inicial da aeronave)
|
||||||
|
- `LRT = F_max − f0` — tempo legal restante (decresce com o voo)
|
||||||
|
- `H[k, seq, nid]` — acumulado em tempo real, rastreado na rede (equivale a u_j do artigo)
|
||||||
|
|
||||||
|
**Missões sintéticas:** como os dados reais de 2025 não exercitavam roteamento, o modelo usa um gerador sintético cross-base (`--sintetico`) com distâncias reais (haversine) e velocidade de cruzeiro do C-105 (430 km/h).
|
||||||
|
|
||||||
|
**Pré-processamentos disponíveis:**
|
||||||
|
|
||||||
```text
|
```text
|
||||||
db/raw/relatorio_ciclo_inspecoes_c105_2805_2026-06-15.pdf — ciclo de inspeções C-105/2805
|
db/raw/relatorio_ciclo_inspecoes_c105_2805_2026-06-15.pdf — ciclo de inspeções C-105/2805
|
||||||
db/processed/registro_voo_2025.csv — registro de voo 2025 limpo (1 420 trechos)
|
db/processed/registro_voo_2025.csv — registro de voo 2025 limpo (1 420 trechos)
|
||||||
db/processed/registro_voo_2025_consolidado.csv — consolidado para roteamento
|
db/processed/registro_voo_2025_consolidado.csv — consolidado para roteamento
|
||||||
```
|
```
|
||||||
## Atualizacao - registro de voo 2025
|
|
||||||
|
|
||||||
A `Planilha 2025.xlsx` foi pre-processada a partir de `db/raw/` sem alterar o arquivo original.
|
|
||||||
|
|
||||||
Arquivos gerados:
|
|
||||||
|
|
||||||
```text
|
|
||||||
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:
|
|
||||||
|
|
||||||
```text
|
|
||||||
db/processed/resultado_oamrp_jan_2025.csv
|
|
||||||
```
|
|
||||||
|
|
||||||
Para executar:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
python software/oamrp_v2.py
|
|
||||||
```
|
|
||||||
|
|
||||||
A rodada inicial de janeiro/2025 foi resolvida como otima pelo CBC, com 50 de 61 missoes cumpridas.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user