Investigación de Operaciones · Teoría de Colas

¿Por qué se congestiona
el camión en la mañana?

Una introducción a la teoría de colas aplicada a rutas de transporte urbano, con un modelo matemático y un simulador interactivo.

En una ruta de camión urbano, hay un fenómeno que cualquier pasajero frecuente conoce bien: el camión llega más o menos a tiempo en las primeras paradas, pero en cierto punto del recorrido —generalmente a mitad de la mañana— todo se detiene. La cola crece, los camiones se acumulan, y lo que debía tardar diez minutos tarda cuarenta.

La pregunta parece sencilla: ¿por qué se congestiona ahí y no en otra parte? ¿Y por qué solo en la mañana? La intuición dice "porque hay más gente" —y tiene razón, pero incompleta. El modelo matemático muestra algo más preciso: la congestión no es simplemente una función de cuánta gente hay, sino de la relación entre cuántos llegan y con qué rapidez se les puede atender. Cuando esa relación se acerca a un límite crítico, el sistema no se degrada gradualmente —colapsa.

"No basta con agregar camiones a la ruta. Si el problema es estructural —demasiada demanda en un tramo específico durante un horario específico— la solución también debe ser estructural." — La pregunta que motiva este modelo

La propuesta que modelamos aquí es diferente a la solución obvia. En lugar de agregar camiones (inversión de capital que sería inútil fuera de la hora pico), se propone reasignar temporalmente una fracción de los camiones existentes para que operen exclusivamente en el tramo congestionado —llamémoslo el tramo B–C— durante la hora pico. Después del pico, regresan a la ruta completa. El modelo responde cuántos camiones redirigir, y si eso es suficiente.

El modelo matemático

Para analizar este sistema usamos teoría de colas estocástica. La palabra "estocástica" significa que los tiempos de llegada y de servicio son aleatorios —exactamente como ocurre en la realidad, donde los pasajeros no llegan en fila ordenada y el camión no tarda exactamente lo mismo en cada parada.

Supuesto de modelado

Analizamos solo la hora pico: tomamos una "fotografía" del sistema durante la ventana crítica (por ejemplo, 7–9 am) y asumimos que las tasas de llegada y servicio son constantes en ese intervalo. Esto se llama análisis en estado estacionario condicional y es suficiente para responder la pregunta que nos interesa.

Cada parada de la ruta se modela como un servidor. Los pasajeros llegan según un proceso de Poisson con tasa λ (pasajeros por hora). La flota asignada a ese segmento atiende pasajeros con una tasa de servicio total μ (pasajeros por hora). El modelo se llama M/M/1 —la primera M por las llegadas Markovianas, la segunda por los tiempos de servicio Markovianos.

Parámetros fundamentales
λ → tasa de llegadas (pasajeros / hora)
μ → tasa de servicio total del segmento (pasajeros / hora)
ρ = λ / μ ← utilización: la fracción del tiempo que los camiones están ocupados

La variable ρ (rho) es la clave de todo. Si ρ < 1, el sistema es estable: en promedio, los camiones pueden atender a todos los pasajeros. Si ρ ≥ 1, la cola crece sin límite. Y lo que hace interesante al modelo es lo que ocurre cerca de ρ = 1: las métricas no crecen linealmente —explotan.

Fórmulas del estado estacionario — válidas cuando ρ < 1
Lq = ρ² / (1 − ρ) ← pasajeros promedio esperando en cola
Wq = λ / [μ · (μ − λ)] ← tiempo promedio de espera (en horas)
W = 1 / (μ − λ) ← tiempo total en el sistema (espera + servicio)
Ley de Little — el puente entre lo observable y lo calculable

Lq = λ · Wq y L = λ · W. Esta identidad es exacta para cualquier tipo de cola, sin importar la distribución de llegadas o servicio. Si puedes contar cuántos pasajeros hay en la parada (L) y medir cuántos llegan por hora (λ), obtienes el tiempo de espera promedio directamente: Wq = Lq / λ. Sin cronómetro.

La ruta completa como red de colas

Una ruta con muchas paradas no es un solo servidor —es una red de colas en serie. El Teorema de Jackson (1957) establece que en una red abierta de colas en serie, cada parada puede analizarse independientemente como si fuera un nodo M/M/1 aislado. El tiempo total de viaje es:

Tiempo total de viaje de extremo a extremo
W_total = Σᵢ Wᵢ + Σᵢ tᵢ
Wᵢ = tiempo de espera en la parada i
tᵢ = tiempo de tránsito entre parada i e i+1 (medible en campo)

El cuello de botella —la parada que más contribuye al tiempo de espera— es la que tiene mayor utilización ρᵢ. Cuando los alumnos identificaron las paradas B y C como el tramo congestionado, estaban localizando el nodo donde ρ se acerca peligrosamente a 1.

La propuesta: reasignar, no comprar

Sea n el número total de camiones en la ruta y k los camiones que se redirigen al tramo B–C durante la hora pico. Los (n − k) restantes continúan la ruta completa. Cada segmento ahora tiene su propia capacidad:

Capacidad efectiva de cada segmento
μ_d = (n − k) · μ₀ ← ruta principal, con n−k camiones
μ_s = k · μ₀ ← subconjunto B–C, con k camiones
μ₀ = capacidad de un solo camión (pasajeros / hora)

La demanda en el tramo B–C es mayor que en el resto de la ruta —llamémosla λ_BC. Esto es precisamente por qué hay congestión: la misma flota que es suficiente para el resto de la ruta, no lo es para ese tramo en hora pico. La utilización de cada segmento con la reasignación es:

Utilización de cada segmento tras la reasignación
ρ_d = λ_normal / μ_d = λ_normal / [(n−k)·μ₀]
ρ_s = λ_BC / μ_s = λ_BC / [k·μ₀]
El trade-off fundamental

Aumentar k mejora el subconjunto B–C (baja ρ_s) pero debilita la ruta principal (sube ρ_d). Si k es demasiado pequeño, B–C sigue congestionado. Si k es demasiado grande, la ruta principal se colapsa. El modelo encuentra el rango de k que mantiene ambos segmentos estables.

¿Cuántos camiones redirigir? El rango factible

Para que ambos segmentos sean estables simultáneamente, se necesita ρ_d < 1 y ρ_s < 1. Esas dos condiciones imponen un rango sobre k:

El subconjunto B–C debe ser estable: ρ_s < 1 k · μ₀ > λ_BC → k > λ_BC / μ₀ → k_mín = ⌈λ_BC / μ₀⌉
La ruta principal debe ser estable: ρ_d < 1 (n−k) · μ₀ > λ_normal → k < n − λ_normal/μ₀ → k_máx = ⌊n − λ_normal/μ₀⌋
El rango factible es el intervalo de enteros entre k_mín y k_máx k_mín ≤ k ≤ k_máx
Si k_mín > k_máx
No existe ningún valor de k que estabilice ambos segmentos. La flota actual es insuficiente para resolver el problema con reasignación —se necesitan más camiones o reducir la demanda.

El k óptimo: igualar los tiempos de espera

Dentro del rango factible, el k óptimo (k*) es aquel que iguala los tiempos de espera de ambos segmentos. Si Wq_d > Wq_s, conviene mover más camiones a B–C; si Wq_d < Wq_s, se están enviando demasiados. La condición de optimalidad es:

Condición de optimalidad
Wq_d(k*) = Wq_s(k*)

Sustituyendo las expresiones M/M/1 y definiendo α = λ_normal/μ₀ y β = λ_BC/μ₀ (cargas normalizadas):

Ecuación de optimalidad en función de k
α / [(n−k)·(n−k − α)] = β / [k·(k − β)]
→ cuadrática en k; se resuelve numéricamente por bisección
→ caso especial λ_normal = λ_BC: k* = n/2 (división simétrica)
→ en general λ_BC > λ_normal: k* > n/2

Simulador interactivo

Ajusta los parámetros estimados de tu ruta. Marca las paradas B y C donde identificas la congestión. Mueve k para ver cómo cambian las métricas —el simulador calcula el rango factible y el k* automáticamente.

Modelo de reasignación de flota en hora pico

M/M/1 · Red de Jackson
n — camiones totales en la ruta
El total de unidades que opera la ruta actualmente. Es un dato fijo.
10
μ₀ — capacidad por camión (pas/hr)
Pasajeros que un solo camión puede atender por hora en el tramo.
80
λ_normal — demanda fuera de B–C (pas/hr)
Tasa de llegadas promedio en las paradas normales de la ruta.
60
λ_BC — demanda en B–C, hora pico (pas/hr)
Tasa de llegadas en el tramo congestionado durante la hora pico. Debe ser mayor que λ_normal para que el modelo sea interesante.
350
ρ bajo (<0.7)
ρ elevado (0.7–0.9)
ρ crítico (≥0.9)
Paradas B y C
Clic en la ruta: primer clic mueve B · segundo clic mueve C
Parada B — inicio del tramo
26
Parada C — fin del tramo
56
k — camiones a redirigir al tramo B–C durante hora pico
Rango factible: —
5 / 10
Sin reasignación — todos los camiones, ruta completa
ρ fuera de B–C—
ρ en B–C (hora pico)—
Wq en B–C—
Lq en B–C—
Con reasignación de k camiones a B–C
ρ_d ruta principal—
ρ_s subconjunto B–C—
Wq_d ruta principal—
Wq_s subconjunto B–C—
k* óptimo sugerido—
—
Δρ en B–C
—
ΔWq en B–C
—
Sistema factible

Ejercicio numérico paso a paso

Sigue este ejemplo con datos realistas. El objetivo es que puedas resolver un problema completo desde la estimación de parámetros hasta la interpretación del resultado.

ParámetroSímboloValorCómo lo obtienes
Camiones en la rutan10Conteo directo en la ruta
Capacidad por camiónμ₀80 pas/hr60 ÷ tiempo_parada_promedio (min)
Demanda fuera de B–Cλ_normal60 pas/hrConteo en paradas normales durante T min
Demanda en B–C, picoλ_BC700 pas/hrConteo en B–C durante la hora pico

Paso 1 — Situación actual. Con los 10 camiones en ruta completa, μ_total = 10 × 80 = 800 pas/hr. La utilización en B–C durante la hora pico es:

ρ_BC = 700 / 800 = 0.875 ← zona crítica
Wq_BC = 700 / [800 × (800−700)] = 700 / 80,000 = 0.00875 hr = 0.525 min por parada

Con 30 paradas en el tramo B–C, el retraso acumulado solo por espera es aproximadamente 15.75 minutos por encima del tiempo de tránsito normal.

Paso 2 — Rango factible de k.

k_mín = ⌈λ_BC / μ₀⌉ = ⌈700 / 80⌉ = ⌈8.75⌉ = 9
k_máx = ⌊n − λ_normal/μ₀⌋ = ⌊10 − 0.75⌋ = ⌊9.25⌋ = 9
Rango factible: {9} ← solo un valor posible
Interpretación del rango de un solo punto

El hecho de que k_mín = k_máx = 9 no es una buena noticia operativa. Significa que no hay margen: si la demanda sube un poco más de 700 pas/hr, no existe ningún valor de k que estabilice ambos segmentos con n = 10 camiones. El modelo está señalando el límite del sistema, no solo la solución óptima.

Paso 3 — Métricas con k = 9.

Ruta principal (1 camión)
μ_d = 1 × 80 = 80 pas/hr
ρ_d = 60 / 80 = 0.75
Wq_d = 60 / [80 × 20] = 0.0375 hr = 2.25 min
Subconjunto B–C (9 camiones)
μ_s = 9 × 80 = 720 pas/hr
ρ_s = 700 / 720 = 0.972 ← estable, pero muy ajustado
Wq_s = 700 / [720 × 20] = 0.0486 hr = 2.92 min

Paso 4 — Verificación con Ley de Little. Para el subconjunto con k = 9:

Lq = λ_BC × Wq_s = 700 × 0.0486 = 34.0 pasajeros ← Ley de Little
Lq = ρ_s² / (1−ρ_s) = 0.945 / 0.028 = 33.7 ≈ 34 ✓ ← fórmula directa
Pregunta de reflexión

Con los mismos datos pero n = 12 camiones: ¿cuál es el nuevo rango factible de k? ¿Existe ahora un k* interior donde Wq_d = Wq_s? ¿Qué implica para el tiempo de espera en ambos segmentos? ¿Justifica esa mejora la inversión en 2 camiones adicionales?

Referencias

Jackson, J. R. (1957). Networks of waiting lines. Operations Research, 5(4), 518–521. — Teorema que permite analizar cada nodo de la red independientemente.
Erlang, A. K. (1917). Solution of some problems in the theory of probabilities of significance in automatic telephone exchanges. Elektroteknikeren, 13. — Fórmulas fundacionales para colas con múltiples servidores.
Little, J. D. C. (1961). A proof for the queuing formula: L = λW. Operations Research, 9(3), 383–387. — Demostración de la identidad que conecta L, λ y W.
Kleinrock, L. (1975). Queueing Systems, Volume 1: Theory. Wiley-Interscience. — Referencia estándar de teoría de colas para redes.
Hillier, F. S. & Lieberman, G. J. (2021). Introduction to Operations Research (11ª ed.). McGraw-Hill. — Capítulo 17: Teoría de colas. Incluye M/M/1, M/M/s y redes.
Taha, H. A. (2017). Operations Research: An Introduction (10ª ed.). Pearson. — Capítulo 15: Modelos de colas. Tratamiento accesible con ejemplos de transporte.