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.
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.
| Classe de Via | Velocidade padrão, Brasil | Velocidade padrão, demais países | Fluxo predefinido por faixa |
|---|---|---|---|
motorway | 100 km/h | 100 km/h | 1.200/h |
trunk | 80 km/h | 50 km/h | 900/h |
primary | 60 km/h | 50 km/h | 600/h |
secondary | 60 km/h | 50 km/h | 400/h |
tertiary | 40 km/h | 50 km/h | 250/h |
unclassified | 30 km/h | 50 km/h | 80/h |
residential | 30 km/h | 50 km/h | 80/h |
living_street | 20 km/h | 20 km/h | 30/h |
service | 20 km/h | 20 km/h | 20/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âmetro | Valor |
|---|---|
| Intervalo de tempo desejado T | 1,2 s |
| Distância mínima parado s₀ | 2 m |
| Aceleração máxima a | 1,5 m/s² |
| Desaceleração confortável b | 2 m/s² |
| Expoente de aceleração δ | 4 |
| Comprimento do Veículo | 5 m |
| Limite de frenagem forte | 9 m/s² |
| Desaceleração que um motorista aceita para parar no amarelo ou ceder | 4 m/s² |
| Passo de tempo | 0,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.
| Aspecto | SUMO | MATSim | transito-analyzer |
|---|---|---|---|
| Roda em | Desktop ou servidor (C++), com interface gráfica | Servidor (Java), execuções em lote | No navegador, em um Web Worker |
| Modelo de tráfego | Microscópico, vários modelos de perseguição, múltiplas faixas com troca de faixa | Modelo de filas mesoscópico com agentes seguindo planos diários | IDM microscópico, uma faixa por sentido, sem troca de faixa |
| Escala típica | De corredores a cidades inteiras | Regiões inteiras, milhões de agentes | Uma Região de até 3 km de raio, alguns milhares de Veículos |
| Entrada de demanda | Contagens, matrizes origem–destino, rotas | População sintética com planos de atividades | Fluxos predefinidos por Classe de Via, um controle de Intensidade |
| Licença | EPL-2.0 / GPL-2.0 | GPL-2.0 | Veja 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
- Treiber, M., Hennecke, A. e Helbing, D. (2000). Congested traffic states in empirical observations and microscopic simulations. Physical Review E, 62, 1805.
- Treiber, M. e Kesting, A. (2013). Traffic Flow Dynamics: Data, Models and Simulation. Springer.
- Wiki do OpenStreetMap: Key:highway
- Wiki do OpenStreetMap: Key:oneway, Key:lanes, Key:maxspeed
- Wiki do OpenStreetMap: Relation:restriction
- Documentação do Eclipse SUMO: netconvert e o mapa de tipos da importação OSM
- MATSim: The Multi-Agent Transport Simulation (Horni, Nagel e Axhausen, 2016)
- Brasil, Lei 9.503/1997 (Código de Trânsito Brasileiro), art. 61
Última atualização em