Otimização de Rotas - Vanguru
Visão Geral
A otimização de rotas é um dos principais diferenciais do Vanguru, oferecendo economia real de tempo e combustível através de algoritmos inteligentes que calculam a melhor ordem de paradas.
Diferença Free vs Premium
Free: Otimização Manual
Algoritmo Próprio: - Baseado em proximidade geográfica - Cálculo de distância em linha reta (haversine) - Não considera trânsito em tempo real - Não considera restrições de vias - Sugestão de ordem, mas ajuste manual
Limitações: - Precisão limitada (~70%) - Não considera condições de trânsito - Pode sugerir rotas impraticáveis - Requer validação manual
Ideal para: - Rotas simples e conhecidas - Áreas com pouco trânsito - Usuários que preferem controle total - Fase de teste do aplicativo
Premium: Otimização Automática
Google Directions API: - ✅ Algoritmo profissional do Google - ✅ Considera trânsito em tempo real - ✅ Respeita restrições de vias - ✅ Otimização por tempo ou distância - ✅ Waypoints optimization (até 25 paradas) - ✅ Rotas alternativas - ✅ Estimativa precisa de tempo (ETA)
Benefícios Comprovados: - Economia de Combustível: 10-20% - Economia de Tempo: 15-30 min/rota - Menor Desgaste: Menos km rodados - Previsibilidade: ETAs precisos
ROI para o Cliente: - Custo Premium: R$ 19,90/mês - Economia mensal: R$ 150-300 - ROI: 754% - 1.508%
Como Funciona
Algoritmo Free (Próprio)
1. Recebe lista de paradas (endereços)
2. Geocoding: Converte endereços em coordenadas
3. Calcula distância entre todos os pares (haversine)
4. Algoritmo do vizinho mais próximo:
- Começa na posição atual
- Escolhe parada mais próxima
- Repete até todas as paradas
5. Retorna ordem sugerida
6. Usuário pode ajustar manualmente
Complexidade: O(n²)
Precisão: ~70%
Custo: R$ 0,00
Algoritmo Premium (Google)
1. Recebe lista de paradas (endereços)
2. Envia requisição para Directions API:
- Origin: Posição atual
- Destination: Última parada (instituição)
- Waypoints: Paradas intermediárias
- Optimize: true
- Traffic model: best_guess
3. Google retorna:
- Ordem otimizada de waypoints
- Polylines de cada trecho
- Distância total
- Duração estimada (com trânsito)
4. Sistema aplica ordem automaticamente
5. Usuário pode revisar e ajustar
Complexidade: Algoritmo proprietário Google
Precisão: ~95%
Custo: R$ 1,00/usuário/mês
Parâmetros de Otimização
Otimizar por Tempo (Padrão)
- Minimiza tempo total de viagem
- Considera trânsito em tempo real
- Pode resultar em rota mais longa (km)
- Ideal para: Horários de pico, compromissos rígidos
Otimizar por Distância
- Minimiza distância total percorrida
- Economia de combustível
- Pode resultar em tempo maior (trânsito)
- Ideal para: Horários fora de pico, economia
Considerações de Trânsito
Traffic Model (Premium):
- best_guess: Previsão baseada em histórico
- pessimistic: Considera pior cenário
- optimistic: Considera melhor cenário
Departure Time: - Horário planejado de partida - Afeta previsão de trânsito - Importante para rotas de manhã/tarde
Restrições e Limites
Limites Técnicos
| Aspecto | Free | Premium |
|---|---|---|
| Máximo de Paradas | 50 | 25 (Google limit) |
| Otimizações/Mês | Ilimitadas | Ilimitadas |
| Custo por Otimização | R$ 0,00 | ~R$ 0,025 |
| Precisão | ~70% | ~95% |
Restrições de Rota
Google Directions API: - Máximo 25 waypoints por requisição - Máximo 10 requisições/segundo - Máximo 100.000 requisições/dia
Solução para Rotas Grandes: - Dividir em múltiplas sub-rotas - Otimizar cada sub-rota separadamente - Combinar resultados
Casos de Uso
Caso 1: Rota Simples (5 paradas)
Cenário: - 5 passageiros em bairros próximos - Destino: Mesma escola - Horário: 7h da manhã
Free: - Tempo de otimização: < 1 segundo - Ordem sugerida: Baseada em proximidade - Usuário ajusta manualmente se necessário
Premium: - Tempo de otimização: 2-3 segundos - Ordem otimizada: Considera trânsito das 7h - ETA preciso para cada parada - Economia estimada: 5-10 minutos
Caso 2: Rota Complexa (20 paradas)
Cenário: - 20 passageiros em bairros diversos - Destinos: 3 escolas diferentes - Horário: 7h da manhã (pico)
Free: - Tempo de otimização: 2-3 segundos - Ordem sugerida: Pode não ser ideal - Requer validação e ajustes manuais - Possível perda de tempo em trânsito
Premium: - Tempo de otimização: 5-8 segundos - Ordem otimizada: Considera trânsito e múltiplos destinos - ETAs precisos - Economia estimada: 20-30 minutos - ROI claro: Economia de R$ 150-300/mês
Caso 3: Rota com Restrições
Cenário: - Rua de mão única - Área com restrição de horário - Preferência de ordem (irmãos juntos)
Free: - Não detecta restrições de via - Pode sugerir rota impraticável - Usuário precisa conhecer as restrições
Premium: - Google detecta automaticamente - Respeita restrições de via - Sugere rota alternativa viável - Usuário pode adicionar preferências manuais
Integração Técnica
Estrutura de Requisição (Premium)
final request = DirectionsRequest(
origin: LatLng(-23.550520, -46.633308), // Posição atual
destination: LatLng(-23.561684, -46.656139), // Escola
waypoints: [
Waypoint(
location: LatLng(-23.552520, -46.635308),
stopover: true,
),
// ... mais waypoints
],
optimizeWaypoints: true,
departureTime: DateTime(2026, 1, 15, 7, 0), // 7h da manhã
trafficModel: TrafficModel.bestGuess,
mode: TravelMode.driving,
);
final response = await directionsService.route(request);
Estrutura de Resposta
class DirectionsResponse {
final List<Route> routes;
final List<int> waypointOrder; // Ordem otimizada
final String status;
}
class Route {
final List<Leg> legs;
final Polyline overviewPolyline;
final Bounds bounds;
final String summary;
final int distanceMeters;
final int durationSeconds;
}
class Leg {
final LatLng startLocation;
final LatLng endLocation;
final int distanceMeters;
final int durationSeconds;
final List<Step> steps;
}
Processamento da Resposta
void applyOptimizedOrder(DirectionsResponse response) {
final optimizedOrder = response.waypointOrder;
// Reordena paradas conforme sugestão do Google
final reorderedStops = optimizedOrder.map((index) =>
originalStops[index]
).toList();
// Atualiza UI
setState(() {
stops = reorderedStops;
});
// Calcula economia
final originalDistance = calculateTotalDistance(originalStops);
final optimizedDistance = response.routes.first.distanceMeters;
final savings = originalDistance - optimizedDistance;
showSavingsDialog(savings);
}
Custos e Economia
Análise de Custo-Benefício
Custo Premium (por usuário/mês): - Directions API: R$ 1,00 - Outros serviços: R$ 1,95 - Total: R$ 2,95
Economia Gerada (por usuário/mês): - Combustível (10-20%): R$ 100-200 - Tempo (10h × R$ 30/h): R$ 300 - Total: R$ 400-500
ROI: 13.559% - 16.949%
Projeção de Uso
| Usuários Premium | Requisições/Mês | Custo Google | Custo Total |
|---|---|---|---|
| 10 | 400 | R$ 10,00 | R$ 29,50 |
| 50 | 2.000 | R$ 50,00 | R$ 147,50 |
| 100 | 4.000 | R$ 100,00 | R$ 295,00 |
| 500 | 20.000 | R$ 500,00 | R$ 1.475,00 |
Observação: Custo por requisição = R$ 0,025 (USD 0,005 × R$ 5,00)
Melhorias Futuras
Roadmap
Q2 2026: - [ ] Otimização multi-objetivo (tempo + distância) - [ ] Preferências de rota (evitar pedágios, preferir avenidas) - [ ] Histórico de otimizações (comparação antes/depois)
Q3 2026: - [ ] Machine Learning para aprender preferências do usuário - [ ] Otimização considerando janelas de tempo (horário escolar) - [ ] Sugestão de melhor horário de partida
Q4 2026: - [ ] Otimização de múltiplas rotas simultâneas - [ ] Compartilhamento de rotas entre motoristas - [ ] API de integração para sistemas escolares
2027: - [ ] Previsão de trânsito com IA - [ ] Otimização dinâmica durante execução - [ ] Rotas compartilhadas (carpool escolar)
Métricas de Sucesso
- Economia de Combustível: 10-20% (Premium)
- Economia de Tempo: 15-30 min/rota (Premium)
- Precisão de ETA: ±5 minutos (Premium)
- Adoção: 70%+ dos usuários Premium usam otimização
- Satisfação: NPS > 9 para otimização
Documento: Otimização de Rotas
Versão: 1.0
Data: Janeiro 2026