NSGA-III (Non-dominated Sorting Genetic Algorithm III)
O NSGA-III é uma evolução do NSGA-II, projetado especificamente para problemas de otimização com muitos objetivos (3 ou mais). Utiliza pontos de referência para manter a diversidade da fronteira de Pareto em espaços de alta dimensão.
Como Funciona
O NSGA-III introduz melhorias chave sobre o NSGA-II:
- Pontos de Referência: Define uma grade de pontos no espaço objetivo
- Associação de Soluções: Cada solução é associada ao ponto de referência mais próximo
- Niching: Soluções são selecionadas para manter uma distribuição uniforme
- Preservação de Diversidade: Evita o "colapso" da fronteira em dimensões altas
Objetivo 3
▲
/│\
/ │ \
/ │ \
/ │ \ ● Soluções
/ ★ │ ★ \ ★ Pontos de Referência
/ ●●│● \
/ ★ │ ★ \
/ │ \
─────────┼─────────► Objetivo 1
│
Objetivo 2
Pontos Fortes e Fracos
Pontos Fortes
- ✅ Excelente para problemas com muitos objetivos (3+)
- ✅ Mantém diversidade em espaços de alta dimensão
- ✅ Suporte nativo a constraints
- ✅ Fronteira de Pareto bem distribuída
- ✅ Escalável para 10+ objetivos
Pontos Fracos
- ❌ Mais complexo de configurar que NSGA-II
- ❌ Requer definição de pontos de referência
- ❌ Pode ser excessivo para apenas 2 objetivos
- ❌ Requer mais avaliações que métodos Bayesianos
Aplicabilidade à Otimização Semafórica
O NSGA-III é recomendado quando:
- 3+ objetivos: Atraso, fluxo, emissões, segurança
- Trade-offs complexos: Múltiplas dimensões de desempenho
- Análise abrangente: Entender todas as opções antes de decidir
- Stakeholders múltiplos: Diferentes prioridades a considerar
Exemplo: 3 Objetivos
{
"sampler": "NSGAIIISampler",
"objectives": [
{"name": "Atraso", "formula": "\"Delay Time\"", "direction": "minimize"},
{"name": "Fluxo", "formula": "\"Flow\"", "direction": "maximize"},
{"name": "Emissões", "formula": "\"CO2 Emissions\"", "direction": "minimize"}
]
}
Configuração no OptFlow
{
"sampler": "NSGAIIISampler",
"sampler_params": {
"population_size": 100
},
"objectives": [
{"name": "Atraso", "formula": "\"Delay Time\"", "direction": "minimize"},
{"name": "Fluxo", "formula": "\"Flow\"", "direction": "maximize"},
{"name": "Paradas", "formula": "\"Number of Stops\"", "direction": "minimize"}
]
}
Parâmetros
| Parâmetro | Descrição | Valor Típico |
|---|---|---|
population_size |
Número de soluções por geração | 100-200 |
Pontos de Referência
O OptFlow configura automaticamente os pontos de referência com base no número de objetivos. Não é necessário especificá-los manualmente.
Comparação NSGA-II vs NSGA-III
| Aspecto | NSGA-II | NSGA-III |
|---|---|---|
| Objetivos ideais | 2-3 | 3+ |
| Mecanismo de diversidade | Crowding distance | Reference points |
| Complexidade | Menor | Maior |
| Distribuição em alta dimensão | ⚠️ Degrada | ✅ Mantém |
| Uso recomendado | Casos comuns | Problemas complexos |
Quando Escolher NSGA-III
| Cenário | Sampler Recomendado |
|---|---|
| 2 objetivos simples | NSGA-II |
| 2 objetivos com análise detalhada | NSGA-II |
| 3 objetivos | NSGA-III |
| 4+ objetivos | NSGA-III |
| Restrições críticas | NSGA-II ou NSGA-III |
Dicas de Uso
- Use apenas quando necessário: Para 2 objetivos, NSGA-II é suficiente
- Aumente a população: Problemas com mais objetivos precisam de mais soluções
- Planeje mais iterações: A convergência é mais lenta com mais objetivos
- Analise trade-offs: Use visualizações para entender as compensações
Custo Computacional
Otimização com muitos objetivos requer significativamente mais avaliações. Considere usar Filtro de Demanda para acelerar cada simulação.
Próximos Passos
- Multi-Objetivo: Conceitos de otimização multi-objetivo
- NSGA-II: Alternativa para problemas com 2-3 objetivos
- Constraints: Como usar restrições