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