Atualiza README para v0.10: Set Partitioning, cenario insp grande e tabela de parametros
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
45
README.md
45
README.md
@@ -144,30 +144,53 @@ git push
|
|||||||
- Preferir nomes de arquivo descritivos, com tipo do documento, aeronave, matrícula e data quando possível.
|
- 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.
|
- Registrar no `LOG.md` qualquer decisão que afete os dados.
|
||||||
|
|
||||||
## Estado atual
|
## Estado atual (v0.10)
|
||||||
|
|
||||||
O modelo ativo é `software/oamrp_v3.py`, que implementa o OAMRP sobre uma rede espaço-tempo com arcos de ferry, múltiplos tipos de inspeção e prioridades de missão via OFRAG.
|
O modelo ativo é `software/oamrp_v3.py`, que implementa o OAMRP sobre uma rede espaço-tempo com arcos de ferry, múltiplos tipos de inspeção e Set Partitioning para cobertura de missões.
|
||||||
|
|
||||||
Última rodada validada (2026-06-16): 50/50 missões sintéticas cumpridas, solver CBC Optimal, 4 EVAMs operacionais.
|
**Última rodada validada (2026-06-16, commit `a34ed6b`):**
|
||||||
|
- 20/20 missões sintéticas cobertas, solver CBC Optimal em < 15 s
|
||||||
|
- Cenário com INSP 2A (4 dias em solo) visível no Gantt da matrícula 2803
|
||||||
|
- Set Partitioning: toda missão coberta por exatamente 1 aeronave
|
||||||
|
|
||||||
Arquivos principais do modelo:
|
### Formulação de cobertura
|
||||||
|
|
||||||
|
O modelo usa **Set Partitioning** (`z[m] = 1` para toda missão `m`): cada missão deve ser atribuída a exatamente uma aeronave. Versões anteriores usavam Set Covering (`z[m] ≤ 1`), que permitia missões descobertas. A transição foi documentada em `docs/changelog.md` (v0.10).
|
||||||
|
|
||||||
|
> **Atenção para contribuidores:** Set Partitioning foi validado apenas para o cenário sintético padrão (20 missões, seed 42, 4 aeronaves, somente 2803 com LRT apertado). Com mais missões ou múltiplas aeronaves com LRT < 5 h simultâneas, o MIP pode ser infeasível ou ultrapassar o time limit. Consulte as limitações detalhadas em `docs/changelog.md`.
|
||||||
|
|
||||||
|
### Arquivos principais
|
||||||
|
|
||||||
```text
|
```text
|
||||||
software/oamrp_v3.py — modelo MIP principal
|
software/oamrp_v3.py — modelo MIP principal (Fases 1–3 + Set Partitioning)
|
||||||
software/gerar_ofrag.py — gerador da tabela OFRAG
|
software/gerar_ofrag.py — gerador da tabela OFRAG
|
||||||
software/visualizar_resultado.py — mapa Folium interativo
|
software/visualizar_resultado.py — Gantt + mapa + tabela interativa
|
||||||
db/processed/ofrag.csv — ordens de missão com prioridades 1–5
|
db/processed/ofrag.csv — ordens de missão com prioridades 1–5
|
||||||
db/processed/resultado_oamrp_sintetico.csv — resultado da última rodada
|
db/processed/f0_cenario_insp_grande.json — f0 calibrado para forçar INSP 2A em 2803
|
||||||
db/processed/mapa_rotas.html — mapa interativo de rotas
|
db/processed/resultado_oamrp_v3.csv — resultado da última rodada
|
||||||
|
db/processed/planejamento_insp_grande.html — Gantt com inspeção de 4 dias visível
|
||||||
```
|
```
|
||||||
|
|
||||||
Para rodar:
|
### Como rodar
|
||||||
|
|
||||||
|
Cenário padrão (inspeção grande visível no Gantt):
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
python software/oamrp_v3.py --sintetico --seed 42 --aleatorio --ofrag db/processed/ofrag.csv
|
python software/oamrp_v3.py --sintetico --seed 42 --f0 db/processed/f0_cenario_insp_grande.json --time-limit 60
|
||||||
python software/visualizar_resultado.py
|
python software/visualizar_resultado.py --resultado db/processed/resultado_oamrp_v3.csv --saida db/processed/planejamento_insp_grande.html
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Parâmetros relevantes do modelo:
|
||||||
|
|
||||||
|
| Parâmetro | Padrão | Descrição |
|
||||||
|
|---|---|---|
|
||||||
|
| `--sintetico` | — | Usa missões sintéticas cross-base em vez do CSV real |
|
||||||
|
| `--n-missoes` | 20 | Número de missões sintéticas |
|
||||||
|
| `--seed` | 42 | Semente aleatória (reprodutibilidade) |
|
||||||
|
| `--f0` | — | JSON com horas acumuladas iniciais por aeronave/inspeção |
|
||||||
|
| `--time-limit` | 300 | Limite de tempo do solver CBC (segundos) |
|
||||||
|
| `--aleatorio` | — | Sorteia f0 aleatório entre 10%–90% de F_max |
|
||||||
|
|
||||||
Pré-processamentos disponíveis:
|
Pré-processamentos disponíveis:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
|||||||
Reference in New Issue
Block a user