Cómo funciona la simulación
transito-analyzer es una simulación microscópica de tráfico en el navegador sobre la Red Vial real de OpenStreetMap de una Región que tú eliges. Esta página describe el flujo de datos, el modelo de Vehículo, las reglas de las Señales, las métricas y las limitaciones, con los valores predeterminados exactos que usa el motor.
Qué es el simulador
Una Región es un círculo de territorio real, definido por un centro y un radio de hasta 3 km, que eliges en un mapa. El simulador construye la Red Vial de la Región a partir de OpenStreetMap, deja entrar Vehículos por sus Entradas y mueve cada uno individualmente, diez veces por segundo simulado, dentro de tu navegador.
Es gratis, no pide cuenta y no envía nada sobre ti a un servidor más allá de la Región que pediste. El motor es de código abierto; su versión aparece abajo para que los resultados puedan reproducirse.
Datos: cómo una Región se convierte en una Red Vial
La Red Vial es el grafo dirigido de las calles dentro de la Región: Segmentos unidos en Intersecciones. El servidor consulta la Overpass API por las vías de OpenStreetMap etiquetadas highway=* con una de las Clases de Vía de la tabla siguiente, descartando áreas, vías privadas y vías cerradas a vehículos motorizados; las vías service solo se conservan cuando no tienen tipo o son callejones.
Cada vía se convierte en un Segmento por sentido de circulación: oneway decide los sentidos (autopistas y rotondas son de sentido único por defecto), lanes da el número de carriles (dos por defecto en motorway, trunk y primary, uno en las demás) y maxspeed la velocidad de flujo libre. Cuando falta maxspeed, el valor predeterminado depende del país del centro de la Región: los del Código de Tránsito Brasileño, o los urbanos de SUMO en otros lugares. Los nodos etiquetados highway=traffic_signals se convierten en Señales; stop y give_way en reglas de ceda el paso; las relaciones de restricción de giro en Restricciones de Giro.
Los Segmentos que cruzan el límite de la Región se convierten en Entradas (hacia dentro) y Salidas (hacia fuera). El servidor guarda cada Red Vial construida en caché durante 30 días, así que una Región que compartes se carga desde la caché. El paquete lleva sus metadatos de licencia: es una base de datos derivada de OpenStreetMap bajo la Open Database License.
| Clase de Vía | Velocidad predeterminada, Brasil | Velocidad predeterminada, otros países | Flujo predefinido por carril |
|---|---|---|---|
motorway | 100 km/h | 100 km/h | 1200/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 |
Las clases _link (ramales y enlaces) heredan el Flujo predefinido de su clase madre; en Brasil su velocidad predeterminada es la de la clase madre menos un 20 %.
Modelo de Vehículo
Cada Vehículo sigue el Intelligent Driver Model (IDM, Treiber, Hennecke y Helbing, 2000) en su forma mejorada (Treiber y Kesting, 2013, sección 11.3.6). La aceleración depende de la velocidad propia v del Vehículo, de su velocidad deseada v₀, de la distancia s al líder y de la tasa de aproximación Δv:
a_IDM = a · [1 − (v / v₀)^δ − (s* / s)²], con s*(v, Δv) = s₀ + max(0, v·T + v·Δv / (2·√(a·b)))
La velocidad deseada es el límite del Segmento multiplicado por un factor por Vehículo sorteado una vez de una distribución normal con media 1 y desviación típica 0,1, acotado a 0,8–1,2. Las posiciones avanzan con una actualización balística y una regla de parada exacta cada 0,1 segundos simulados. Cada Segmento tiene una cola por carril de la etiqueta lanes: un Vehículo elige el carril una vez por Segmento, así que más carriles insertan y albergan más Vehículos, pero nadie cambia nunca de carril.
| Parámetro | Valor |
|---|---|
| Intervalo de tiempo deseado T | 1,2 s |
| Distancia mínima en parada s₀ | 2 m |
| Aceleración máxima a | 1,5 m/s² |
| Deceleración confortable b | 2 m/s² |
| Exponente de aceleración δ | 4 |
| Longitud del Vehículo | 5 m |
| Límite de frenada fuerte | 9 m/s² |
| Deceleración que un conductor acepta para parar en ámbar o ceder el paso | 4 m/s² |
| Paso de tiempo | 0,1 s |
Flujo e Intensidad
Un Flujo es la tasa de Vehículos que entran por una Entrada, en vehículos por hora. Su valor predefinido es el de la Clase de Vía en la tabla anterior multiplicado por el número de carriles de la Entrada; puedes sobrescribir cualquier Entrada entre 0 y 2000/h por carril. Un carril pasa unos 1900/h en saturación, así que el simulador avisa cuando los Flujos de las Entradas superan lo que pueden admitir.
La Intensidad es el multiplicador global aplicado a todos los Flujos, de 0,1 a 3 en pasos de 0,05. Los preajustes son valores de hora punta metropolitana, así que la Intensidad predeterminada se calcula por Región a partir de su radio, la suma de los preajustes de sus Entradas y su densidad de Señales, buscando una Región concurrida pero no colapsada. Los preajustes noche, normal y pico valen 0,5, 1 y 1,5 veces ese valor.
Las rutas se eligen una vez al nacer según el tiempo de viaje en flujo libre más penalizaciones por Movimiento (giro a la izquierda 8 s, a la derecha 3 s, cambio de sentido 30 s, cada Señal 15 s, cada ceda el paso señalizado 5 s), respetando las Restricciones de Giro; cuatro variantes de coste perturbadas en ±10 % reparten los Vehículos entre Segmentos paralelos. El sesenta por ciento de los Vehículos nacen en Entradas y el sesenta por ciento terminan en Salidas; el control de tráfico de paso mueve ambos. Un Vehículo que nace sin espacio espera en la cola virtual de su Origen, que se informa aparte y nunca se cuenta como Demora.
Intersecciones y Señales
La prioridad en Intersecciones sin Señal sigue las clases de prioridad de SUMO: la Clase de Vía más alta pasa primero; clases iguales con una diferencia de velocidad superior a 10 km/h tratan la vía más rápida como principal; en otro caso, prioridad a la derecha. Las etiquetas stop y give_way de OpenStreetMap obligan a ceder el paso, y quien ya circula por la rotonda tiene prioridad. Un Vehículo que cede espera mientras un Vehículo prioritario alcanzaría el punto de conflicto antes de que él lo haya despejado, con el hueco aceptado reduciéndose a medida que crece la espera, hasta cualquier hueco sin colisión tras 1,5 min. Ningún Vehículo entra en una Intersección si no hay espacio para él al otro lado.
Una Señal es un semáforo importado de OpenStreetMap. Su Ciclo predeterminado dura 1,5 min con dos Fases por eje, el reparto de verde proporcional al rango de Clase de Vía y al número de carriles de cada eje, un ámbar fijo de 3 s y un todo rojo de 2 s, y los giros a la izquierda ceden al tráfico opuesto de frente. Las Señales consecutivas a lo largo de una vía abren juntas. Puedes fijar el Ciclo de cada Señal entre 30 s y 3 min y su reparto entre 20 % y 80 %; los cambios se aplican al inicio del siguiente Ciclo.
Válvula contra el bloqueo: un Vehículo detenido en una línea de detención durante más de 5 min se elimina y se cuenta como teletransportado, como hace SUMO. El HUD muestra el recuento como diagnóstico; su Demora nunca se atribuye a un Cuello de botella.
Métricas y el ranking de Cuellos de botella
La Congestión es cuánto cae la velocidad media actual de un Segmento por debajo de su velocidad de flujo libre: la razón colorea el mapa de verde en 80 % o más, amarillo hasta 50 %, naranja hasta 30 % y rojo por debajo, suavizada con una media móvil de 30 segundos.
La Demora es el tiempo extra que un Vehículo pasa más allá de lo que tardaría a velocidad de flujo libre, medido contra su propia velocidad deseada acotada por la del Segmento, así que un conductor lento no es un Cuello de botella. La Demora acumulada detenido o avanzando por debajo de 5 km/h en una cadena continua que llega a una línea de detención se carga a esa Intersección; el resto queda en el Segmento.
Una Cola es la línea continua de Vehículos detenidos o avanzando lentamente que termina en la línea de detención de una Intersección. El ranking informa su máximo en la ventana en Vehículos y en metros en el carril más largo.
El Desbordamiento es una Cola cuya cola final no deja espacio para otro Vehículo al inicio de su Segmento, de modo que los Movimientos de la Intersección anterior quedan bloqueados. Se marca, nunca en una Entrada.
Un Cuello de botella es un Segmento o Intersección clasificado entre los más congestionados de la Región. El ranking cubre una ventana deslizante de los últimos 10 min de tiempo simulado, actualizada cada 10 s, y empieza tras el calentamiento: al menos 5 min de tiempo simulado y un recuento de Vehículos que cambia menos de 5 % por minuto. Las filas se ordenan por Demora total en vehículos-hora; las columnas son Demora por Vehículo, razón de velocidad, Vehículos por hora, Cola máxima y el indicador de Desbordamiento. Se muestran los 10 primeros, ampliables a 25. Las Intersecciones en el límite de la Región nunca se clasifican.
Ejemplos resueltos: los escenarios de referencia
El conjunto de pruebas del motor ejecuta Redes Viales sintéticas cuyas respuestas se conocen por la teoría del tráfico. Sirven también como comprobación de cordura sobre la que puedes razonar:
- Una vía recta de un carril a 50 km/h se satura en unos 1 900 veh/h: doce semillas midieron 1 912–1 917 veh/h, frente a 1 750 a 40 km/h y 2 035 a 60 km/h. Esa es la capacidad detrás del aviso de exceso de capacidad.
- Una Señal con un reparto de verde del 50 % deja pasar aproximadamente la mitad de ese Flujo de saturación en cada eje, y la Cola se forma solo antes de su línea de detención.
- Una calle vacía produce Demora cero; a un Vehículo que circula solo a su velocidad deseada nunca se le carga nada.
- La Demora dentro de una Cola se carga a la Intersección donde termina, no al Segmento, así que el ranking señala la Intersección que necesita otro Ciclo y no el Segmento que hay detrás.
Limitaciones
Trata los resultados como una imagen de dónde una Red Vial tiende a formar Colas, no como un estudio de tráfico:
- Un Vehículo mantiene su carril: sin cambio de carril, adelantamientos ni entrelazados.
- Sin peatones, ciclistas, autobuses, maniobras de aparcamiento, incidentes ni clima.
- Las Señales ejecutan planes de tiempo fijo; no hay actuación, desfases de coordinación ni control adaptativo más allá de los valores predeterminados y tus ediciones.
- La demanda procede de preajustes por Clase de Vía, no de conteos ni encuestas origen–destino; las rutas se fijan al nacer y los conductores nunca cambian de ruta.
- La Red Vial es tan buena como OpenStreetMap: una etiqueta de sentido único, un número de carriles o una Señal que falten cambian el resultado. Corrige el mapa y la Región se reconstruye cuando expire la caché.
- Las Regiones están limitadas a 3 km de radio (2 km en el teléfono) y el recuento de Vehículos al presupuesto del dispositivo; más allá, los nuevos Vehículos esperan en la cola virtual.
Comparación con SUMO y MATSim
SUMO (Eclipse Foundation) y MATSim son los simuladores de código abierto de referencia. La tabla recoge las diferencias factuales; ellos son las herramientas adecuadas para un estudio, este sirve para mirar un barrio en un minuto.
| Aspecto | SUMO | MATSim | transito-analyzer |
|---|---|---|---|
| Se ejecuta en | Escritorio o servidor (C++), con interfaz gráfica | Servidor (Java), ejecuciones por lotes | El navegador, en un Web Worker |
| Modelo de tráfico | Microscópico, varios modelos de seguimiento, multicarril con cambio de carril | Modelo de colas mesoscópico con agentes que siguen planes diarios | IDM microscópico, un carril por sentido, sin cambio de carril |
| Escala típica | De corredores a ciudades enteras | Regiones enteras, millones de agentes | Una Región de hasta 3 km de radio, unos miles de Vehículos |
| Entrada de demanda | Conteos, matrices origen–destino, rutas | Población sintética con planes de actividades | Flujos predefinidos por Clase de Vía, un control de Intensidad |
| Licencia | EPL-2.0 / GPL-2.0 | GPL-2.0 | Ver la página de Licencias |
Reproducibilidad
Toda la aleatoriedad procede de un único generador con semilla; la semilla es 42 salvo que un enlace compartido traiga otra. La misma Red Vial, la misma configuración y la misma semilla producen una ejecución idéntica bit a bit en cualquier dispositivo, y Reiniciar vuelve a empezar desde la misma semilla con la configuración actual. Un enlace compartido guarda el centro de la Región, el radio y la semilla, así que cualquiera puede comprobar un resultado.
Versión del motor 0.0.0, versión del constructor de Red Vial 0.0.0.
Fuentes
- Treiber, M., Hennecke, A. y Helbing, D. (2000). Congested traffic states in empirical observations and microscopic simulations. Physical Review E, 62, 1805.
- Treiber, M. y Kesting, A. (2013). Traffic Flow Dynamics: Data, Models and Simulation. Springer.
- Wiki de OpenStreetMap: Key:highway
- Wiki de OpenStreetMap: Key:oneway, Key:lanes, Key:maxspeed
- Wiki de OpenStreetMap: Relation:restriction
- Documentación de Eclipse SUMO: netconvert y el mapa de tipos de la importación OSM
- MATSim: The Multi-Agent Transport Simulation (Horni, Nagel y Axhausen, 2016)
- Brasil, Ley 9.503/1997 (Código de Tránsito Brasileño), art. 61
Última actualización: