transito-analyzer

Como a simulação funciona

O transito-analyzer é uma simulação microscópica de trânsito no navegador sobre a Rede Viária real do OpenStreetMap de uma Região que você escolhe. Esta página descreve o fluxo de dados, o modelo de Veículo, as regras dos Sinais, as métricas e as limitações, com os valores padrão exatos que o motor usa.

O que é o simulador

Uma Região é um círculo de território real, definido por um centro e um raio de até 3 km, que você escolhe em um mapa. O simulador constrói a Rede Viária da Região a partir do OpenStreetMap, deixa os Veículos entrarem pelas Entradas e move cada um deles individualmente, dez vezes por segundo simulado, dentro do seu navegador.

É gratuito, não pede conta e não envia nada sobre você a um servidor além da Região que você pediu. O motor é de código aberto; sua versão aparece abaixo para que os resultados possam ser reproduzidos.

Abrir o simulador

Dados: como uma Região vira uma Rede Viária

A Rede Viária é o grafo direcionado das ruas dentro da Região: Segmentos unidos em Interseções. O servidor consulta a Overpass API pelas vias do OpenStreetMap marcadas com highway=* em uma das Classes de Via da tabela abaixo, descartando áreas, vias privadas e vias fechadas a veículos motorizados; vias service só são mantidas quando não têm tipo ou são becos.

Cada via vira um Segmento por sentido de circulação: oneway decide os sentidos (rodovias e rotatórias são de sentido único por padrão), lanes dá o número de faixas (duas por padrão em motorway, trunk e primary, uma nas demais) e maxspeed a velocidade de fluxo livre. Quando maxspeed falta, o padrão depende do país do centro da Região: os valores do Código de Trânsito Brasileiro, ou os padrões urbanos do SUMO em outros lugares. Nós marcados com highway=traffic_signals viram Sinais; stop e give_way viram regras de preferência; relações de restrição de conversão viram Restrições de Conversão.

Segmentos que cruzam o limite da Região viram Entradas (para dentro) e Saídas (para fora). O servidor guarda cada Rede Viária construída em cache por 30 dias, então uma Região que você compartilha carrega do cache. O pacote traz seus metadados de licença: é um banco de dados derivado do OpenStreetMap sob a Open Database License.

Classes de Via mantidas, suas velocidades padrão de fluxo livre e o Fluxo predefinido por faixa em uma Entrada
Classe de ViaVelocidade padrão, BrasilVelocidade padrão, demais paísesFluxo predefinido por faixa
motorway100 km/h100 km/h1.200/h
trunk80 km/h50 km/h900/h
primary60 km/h50 km/h600/h
secondary60 km/h50 km/h400/h
tertiary40 km/h50 km/h250/h
unclassified30 km/h50 km/h80/h
residential30 km/h50 km/h80/h
living_street20 km/h20 km/h30/h
service20 km/h20 km/h20/h

As classes _link (alças e ramais) herdam o Fluxo predefinido da classe-mãe; no Brasil, sua velocidade padrão é a da classe-mãe menos 20 %.

Modelo de Veículo

Cada Veículo segue o Intelligent Driver Model (IDM, Treiber, Hennecke e Helbing, 2000) em sua forma aprimorada (Treiber e Kesting, 2013, seção 11.3.6). A aceleração depende da velocidade própria v do Veículo, de sua velocidade desejada v₀, da distância s até o líder e da taxa de aproximação Δv:

a_IDM = a · [1 − (v / v₀)^δ − (s* / s)²], com s*(v, Δv) = s₀ + max(0, v·T + v·Δv / (2·√(a·b)))

A velocidade desejada é o limite do Segmento vezes um fator por Veículo sorteado uma vez de uma distribuição normal com média 1 e desvio padrão 0,1, limitado a 0,8–1,2. As posições avançam com uma atualização balística e uma regra de parada exata a cada 0,1 segundo simulado. Cada Segmento tem uma fila por faixa da tag lanes: um Veículo escolhe a faixa uma vez por Segmento, então mais faixas inserem e comportam mais Veículos, mas ninguém nunca troca de faixa.

Parâmetros do IDM, fixos para todos os Veículos
ParâmetroValor
Intervalo de tempo desejado T1,2 s
Distância mínima parado s₀2 m
Aceleração máxima a1,5 m/s²
Desaceleração confortável b2 m/s²
Expoente de aceleração δ4
Comprimento do Veículo5 m
Limite de frenagem forte9 m/s²
Desaceleração que um motorista aceita para parar no amarelo ou ceder4 m/s²
Passo de tempo0,1 s

Fluxo e Intensidade

Um Fluxo é a taxa de Veículos que entram por uma Entrada, em veículos por hora. Seu valor predefinido é o da Classe de Via na tabela acima vezes o número de faixas da Entrada; você pode sobrescrever qualquer Entrada entre 0 e 2.000/h por faixa. Uma faixa passa cerca de 1.900/h na saturação, então o simulador avisa quando os Fluxos das Entradas excedem o que elas admitem.

Intensidade é o multiplicador global aplicado a todos os Fluxos, de 0,1 a 3 em passos de 0,05. As predefinições são valores de pico metropolitano, então a Intensidade padrão é calculada por Região a partir do raio, da soma das predefinições das Entradas e da densidade de Sinais, mirando uma Região movimentada mas não travada. As predefinições noite, normal e pico valem 0,5, 1 e 1,5 vezes esse padrão.

As rotas são escolhidas uma vez no nascimento pelo tempo de viagem em fluxo livre mais penalidades por Movimento (conversão à esquerda 8 s, à direita 3 s, retorno 30 s, cada Sinal 15 s, cada preferência sinalizada 5 s), respeitando as Restrições de Conversão; quatro variantes de custo perturbadas em ±10% espalham os Veículos por Segmentos paralelos. Sessenta por cento dos Veículos nascem em Entradas e sessenta por cento terminam em Saídas; o controle de tráfego de passagem move os dois. Um Veículo que nasce sem espaço espera na fila virtual de sua Origem, informada à parte e nunca contada como Atraso.

Interseções e Sinais

A preferência em Interseções sem Sinal segue as classes de prioridade do SUMO: a Classe de Via mais alta passa primeiro; classes iguais com diferença de velocidade acima de 10 km/h tratam a via mais rápida como principal; senão, vale a direita antes da esquerda. As tags stop e give_way do OpenStreetMap forçam a cessão de passagem, e quem já está na rotatória tem preferência. Um Veículo que cede espera enquanto um Veículo prioritário alcançaria o ponto de conflito antes de ele ter saído, com o intervalo aceito encolhendo conforme a espera cresce, até qualquer intervalo sem colisão após 1,5 min. Nenhum Veículo entra em uma Interseção sem haver espaço para ele do outro lado.

Um Sinal é um semáforo importado do OpenStreetMap. Seu Ciclo padrão dura 1,5 min com duas Fases por eixo, a parcela de verde proporcional ao nível da Classe de Via e ao número de faixas de cada eixo, amarelo fixo de 3 s e vermelho geral de 2 s, e conversões à esquerda cedendo ao tráfego oposto em frente. Sinais consecutivos ao longo de uma via abrem juntos. Você pode definir o Ciclo de cada Sinal entre 30 s e 3 min e sua parcela entre 20% e 80%; as edições valem a partir do próximo início de Ciclo.

Válvula contra travamento: um Veículo parado em uma linha de retenção por mais de 5 min é removido e contado como teletransportado, como faz o SUMO. O HUD mostra a contagem como diagnóstico; seu Atraso nunca é atribuído a um Gargalo.

Métricas e o ranking de Gargalos

Congestionamento é quanto a velocidade média atual de um Segmento fica abaixo de sua velocidade de fluxo livre: a razão colore o mapa de verde em 80% ou mais, amarelo até 50%, laranja até 30% e vermelho abaixo disso, suavizada com uma média móvel de 30 segundos.

Atraso é o tempo extra que um Veículo gasta além do que a velocidade de fluxo livre levaria, medido contra sua própria velocidade desejada limitada pela do Segmento, então um motorista lento não é um Gargalo. O Atraso acumulado parado ou arrastando abaixo de 5 km/h em uma cadeia contínua que alcança uma linha de retenção é cobrado daquela Interseção; o resto fica no Segmento.

Uma Fila é a linha contínua de Veículos parados ou arrastando que termina na linha de retenção de uma Interseção. O ranking informa seu máximo na janela em Veículos e em metros na faixa mais longa.

Transbordamento é uma Fila cuja cauda não deixa espaço para outro Veículo no início de seu Segmento, de modo que os Movimentos da Interseção a montante ficam bloqueados. É sinalizado, nunca em uma Entrada.

Um Gargalo é um Segmento ou Interseção classificado entre os mais congestionados da Região. O ranking cobre uma janela deslizante dos últimos 10 min de tempo simulado, atualizada a cada 10 s, e começa após o aquecimento: ao menos 5 min de tempo simulado e uma contagem de Veículos variando menos de 5% por minuto. As linhas são ordenadas pelo Atraso total em veículos-hora; as colunas são Atraso por Veículo, razão de velocidade, Veículos por hora, Fila máxima e o indicador de Transbordamento. Os 10 primeiros são mostrados, expansíveis para 25. Interseções no limite da Região nunca são classificadas.

Exemplos resolvidos: os cenários de referência

A suíte de testes do motor roda Redes Viárias sintéticas cujas respostas são conhecidas da teoria de tráfego. Elas servem também como verificação de sanidade sobre a qual você pode raciocinar:

  • Uma via reta de faixa única a 50 km/h satura em cerca de 1 900 veíc/h: doze sementes mediram 1 912–1 917 veíc/h, contra 1 750 a 40 km/h e 2 035 a 60 km/h. Essa é a capacidade por trás do aviso de excesso de capacidade.
  • Um Sinal com parcela de verde de 50 % passa cerca de metade desse Fluxo de saturação em cada eixo, e a Fila se forma apenas a montante de sua linha de retenção.
  • Uma rua vazia produz Atraso zero; um Veículo sozinho em sua velocidade desejada nunca é cobrado de nada.
  • O Atraso dentro de uma Fila é cobrado da Interseção em que ela termina, não do Segmento, então o ranking aponta para a Interseção que precisa de outro Ciclo, e não para o Segmento atrás dela.

Limitações

Trate os resultados como um retrato de onde uma Rede Viária tende a formar Filas, não como um estudo de tráfego:

  • Um Veículo mantém sua faixa: nenhuma troca de faixa, ultrapassagem ou entrelaçamento.
  • Sem pedestres, ciclistas, ônibus, manobras de estacionamento, incidentes ou clima.
  • Os Sinais rodam planos de tempo fixo; não há atuação, defasagens de coordenação nem controle adaptativo além dos padrões e das suas edições.
  • A demanda vem de predefinições por Classe de Via, não de contagens ou pesquisas origem–destino; as rotas são fixadas no nascimento e os motoristas nunca mudam de rota.
  • A Rede Viária é tão boa quanto o OpenStreetMap: uma tag de sentido único, um número de faixas ou um Sinal faltando muda o resultado. Corrija o mapa e a Região é reconstruída quando o cache expirar.
  • As Regiões são limitadas a 3 km de raio (2 km no celular) e a contagem de Veículos ao orçamento do aparelho; além dele, novos Veículos esperam na fila virtual.

Comparação com SUMO e MATSim

SUMO (Eclipse Foundation) e MATSim são os simuladores de código aberto de referência. A tabela registra as diferenças factuais; eles são as ferramentas certas para um estudo, este serve para olhar um bairro em um minuto.

AspectoSUMOMATSimtransito-analyzer
Roda emDesktop ou servidor (C++), com interface gráficaServidor (Java), execuções em loteNo navegador, em um Web Worker
Modelo de tráfegoMicroscópico, vários modelos de perseguição, múltiplas faixas com troca de faixaModelo de filas mesoscópico com agentes seguindo planos diáriosIDM microscópico, uma faixa por sentido, sem troca de faixa
Escala típicaDe corredores a cidades inteirasRegiões inteiras, milhões de agentesUma Região de até 3 km de raio, alguns milhares de Veículos
Entrada de demandaContagens, matrizes origem–destino, rotasPopulação sintética com planos de atividadesFluxos predefinidos por Classe de Via, um controle de Intensidade
LicençaEPL-2.0 / GPL-2.0GPL-2.0Veja a página de Licenças

Reprodutibilidade

Toda a aleatoriedade vem de um único gerador com semente; a semente é 42, a menos que um link compartilhado traga outra. A mesma Rede Viária, as mesmas configurações e a mesma semente produzem uma rodada idêntica bit a bit em qualquer aparelho, e Reiniciar recomeça da mesma semente com as configurações atuais. Um link compartilhado guarda o centro da Região, o raio e a semente, então qualquer pessoa pode verificar um resultado.

Versão do motor 0.0.0, versão do construtor de Rede Viária 0.0.0.

Fontes

  1. Treiber, M., Hennecke, A. e Helbing, D. (2000). Congested traffic states in empirical observations and microscopic simulations. Physical Review E, 62, 1805.
  2. Treiber, M. e Kesting, A. (2013). Traffic Flow Dynamics: Data, Models and Simulation. Springer.
  3. Wiki do OpenStreetMap: Key:highway
  4. Wiki do OpenStreetMap: Key:oneway, Key:lanes, Key:maxspeed
  5. Wiki do OpenStreetMap: Relation:restriction
  6. Documentação do Eclipse SUMO: netconvert e o mapa de tipos da importação OSM
  7. MATSim: The Multi-Agent Transport Simulation (Horni, Nagel e Axhausen, 2016)
  8. Brasil, Lei 9.503/1997 (Código de Trânsito Brasileiro), art. 61

Última atualização em