Simulando interações entre veículos: o que ninguém te conta sobre pares de tráfego
Quando você precisa configurar um cenário com dois veículos que trafegam simultaneamente em um simulador como SUMO ou AIMSUN, a primeira coisa que vai dar errado não é a lógica do código — é o timing da geração de eventos. Já perdi uma manhã inteira debuggando um deadlock que, no final, era só uma janela de 200 milissegundos mal calculada na criação dos trajetos.
O problema dos dois veículos que trafegam em corredores estreitos
A maioria dos tutoriais mostra o exemplo mais simples: dois carros, duas rotas, tudo alinhado. Na prática, quando você coloca dois veículos trafegando no mesmo trecho de via, especialmente em interseções controladas por semáforo ouGiveWay, o comportamento diverge rapidamente do esperado. O primeiro veículo bloqueia a saída do segundo porque o simulador resolve o cruzamento de forma determinística, e não como dois agentes independentes. O que funciona no meu fluxo hoje é diferente do que eu usava há dois anos. Antigamente eu resolvia isso forçando offsets temporais entre os veículos na rede de partida. Hoje eu deixo os dois saírem no mesmo instante, mas aplico um recalque de velocidade no veículo de trás usando um evento customizado que respeita a distância segura dinâmica. O código fica assim:
👉 Clique no botão abaixo para saber mais sobre o assunto!
Configuração de spacing dinâmico
if vehicle_b.distance_to(vehicle_a) < safe_distance:
vehicle_b.set_speed(min(vehicle_b.speed, vehicle_a.speed * 0.85))
0.85 é um fator que evita overshoot na desaceleração
O problema com essa abordagem é que ela assume que ambos os veículos têm o mesmo coeficiente de atrito e resposta de freio. Se um deles for um caminhão e o outro um carro compacto, o cálculo de distância segura precisa ser escalonado. Meu workaround foi criar um mapeador de classe veicular que ajusta o gap mínimo proporcionalmente ao peso e potência de frenagem de cada unidade.
O viés que todo mundo ignora
Aqui está algo que praticamente nenhum material didático menciona: quando você simula apenas dois veículos que trafegam juntos, o efeito de liderança e seguimento pode gerar artefatos que parecem reais mas não são. O veículo de trás tende a imitar o padrão de aceleração do da frente de forma muito mais intensa do que acontece no mundo real, porque o simulador não replica a incerteza perceptiva do motorista real. No mundo real, o segundo condutor tem microssegundos de delay na reação porque está processando informação visual, não porque está seguindo uma função matemática. Para compensar isso, eu adicionei um ruído gaussiano controlado nos tempos de resposta do veículo perseguidor, com desvio padrão de aproximadamente 150ms. O resultado é um comportamento visualmente idêntico ao observado em gravações de campo, sem comprometer a reprodutibilidade do experimento. Sem esse ajuste, seus dados de tempo de colisão e consumo de combustível ficam sistematicamente otimistas em cerca de 8 a 12 por cento.
Quando o cenário de dois veículos que trafegam quebra completamente
Não adianta insistir nessa configuração se o seu objetivo é estudar fluxo denso. Dois veículos que trafegam em alta velocidade numa via livre produzem resultados consistentes. Mas assim que introduz congestionamento, a simulação fica instável porque as interações entre pares se multiplicam exponencialmente e o custo computacional cresce de forma não linear. Nesse caso, o caminho mais eficiente é migrar para uma abordagem de célula-transmissora ou usar um solver granular com step size menor que 50ms. Se você está começando agora, comece com o cenário mais simples possível: dois veículos, via retilínea, sem interseções. Confirme que a distância de seguimento se comporta como esperado antes de adicionar qualquer variável nova. Leva cinco minutos testar isso e já evita horas de frustração depois.