Simulación de Eventos Discretos · Tema 23

Proceso de llegada

Ritmo, tasa λ y variabilidad — cuántos llegan por hora y cuán irregularmente caen sobre tu cola.

01 · Punto de partida

El mismo promedio puede ser dos mundos

Dos bancos reciben 30 clientes por hora. En el primero caen uno cada 2 minutos, como un metrónomo. En el segundo caen de a rachas: 10 minutos vacíos y de golpe 8 juntos. ¿Cuál forma cola? El segundo, aunque el promedio λ sea idéntico.

Esa es la lección del proceso de llegada: no alcanza con decir “cuántos por hora”. Hay que decir cuántos (λ) y cómo de irregulares (variabilidad). El ritmo llena el servidor; la irregularidad llena la cola.

  • ¿Cuántos llegan por unidad de tiempo (λ) y cada cuánto en promedio (A = 1/λ)?
  • ¿Caen regulares, al azar poissoniano o en ráfagas?
  • ¿Cómo convierto una lista de horarios en λ y en tiempos entre arribos?
  • ¿Qué variabilidad asumo si no medí nada todavía?

02 · Definición

Tasa, interarribo y variabilidad

λ

Tasa λ

Llegadas por unidad: λ = N/T. Ejemplo: 30/h = 0.5/min. Es lo que empuja ρ = λ/(cμ).

A

Interarribo A

Hueco entre dos llegadas. Media E[A] = 1/λ. La simulación agenda el próximo con un sorteo de A.

±

Variabilidad

Cuánto se dispersa A: CV = σ/E[A]. 0 = metrónomo, 1 = Poisson, >1 = ráfagas.

Cuatro procesos de llegada de manual (letra A de Kendall).
ProcesoCómo son los ACVCuándo usarlo
D deterministaTodos iguales: A = 1/λ0Citas cada 15 min, piezas de una cinta
M markovianoExponenciales: A ~ Exp(λ)1Banco, web, call center sin agenda (defecto)
Ek ErlangSuma de k exponenciales1/√kTrámite en k etapas parecidas
G general / ráfagasCualquiera: mezcla, lotes, picos>1Colectivos que descargan 40 juntos, viralidad

03 · El corazón: Poisson

Por qué el azar exponencial es el defecto

tasa λ→sorteo A ~ Exp(λ)→agenda t + A

El proceso Poisson de tasa λ dice: en cada instante chiquito la chance de que caiga alguien es λ·Δt, sin importar lo que pasó antes. Sus interarribos son exponenciales de media 1/λ, y el nº que cae en un intervalo T es Poisson(λT). Es el modelo del “caen solos, sin cita y sin copiarse”.

  1. 1
    Contar para estimar λ.

    N llegadas en T ⇒ λ̂ = N/T. Con 60 en 2 h, λ̂ = 30/h. Es tasa observada, no promesa.

  2. 2
    Medir los huecos A.

    Restá horarios consecutivos. Su media debe dar ≈ 1/λ̂ y su CV te dice la letra: ~0 D, ~1 M, >1 G.

  3. 3
    Sortear el próximo.

    Con M: A = -ln(1-U)/λ con U uniforme. Con D: A = 1/λ clavado.

  4. 4
    Agendar en el FEL.

    Próxima llegada = reloj + A. Ese evento generará al siguiente: la cadena de llegadas se autoalimenta. (Temas 17–18)

Sin memoria
La exponencial olvida: si hace 10 min que no llega nadie, la espera restante sigue siendo Exp(λ). Solo la exponencial tiene esto.
Poisson(λT)
Nº de llegadas en T: media λT, varianza λT. Con λ=0.5/min y T=10, caen 5 ± √5.
CV y espera
A igual λ y μ, la espera crece con CV². Pasar de D (0) a M (1) ya multiplica Wq; las ráfagas lo disparan.
Lotes
A veces llega un grupo junto (colectivo, batch de jobs). Se modela tamaño de lote + proceso base: picos garantizados.

Regular D

Predecible

Un arribo cada A exacto. La cola solo nace si λ > μ. Fácil de atender, raro en la calle.

Poisson M y ráfagas G

Hay huecos y choques

Aunque λ < μ, dos que chocan generan espera. Las ráfagas juntan choques: misma λ, mucha más Wq.

04 · Ejemplos

El mismo λ, tres calles distintas

  1. 1
    Consultorio con turnos (D).

    Uno cada 15 min ⇒ λ = 4/h, A = 15 clavado, CV ≈ 0. Si la consulta dura 12 min, casi nunca hay cola.

  2. 2
    Banco sin turno (M).

    30/h ⇒ λ = 0.5/min, E[A] = 2 min exponenciales. Caen 0, 1 o 3 en 2 min: esos choques hacen la fila aunque μ dé abasto.

  3. 3
    Parada de colectivo (G con lotes).

    Cada bondi descarga 0–40 juntos cada 10 min. λ media parecida al banco, pero el lote es una ráfaga: CV ≫ 1 y cola instantánea.

De horarios a λ en un renglón.
Horarios observados (min)N/TA mediaLectura
0, 15, 30, 454/h15D: metrónomo
0, 0.4, 0.7, 5.2, 5.9≈ 60/h≈ 1G: ráfagas (dos choques + hueco)
0, 1.8, 4.1, 5.7≈ 30/h≈ 2M: pinta poissoniano

05 · Representación en Python

De horarios a λ, de λ a futuros

Medir es restar horarios; simular es sortear interarribos. Con random.expovariate(λ) generás Poisson; con una constante, D.

Python en tu navegador. El primero estima λ desde horarios; el segundo genera la cadena de llegadas que alimenta el FEL. Cambiá λ y mirá la densidad.

# Estimar λ y CV desde horarios observados (min)
hots = [0.0, 1.8, 4.1, 5.7, 8.0, 9.3]
A = [b - a for a, b in zip(hots[:-1], hots[1:])]
lam = len(A) / (hots[-1] - hots[0])
media = sum(A) / len(A)
var = sum((x - media) ** 2 for x in A) / len(A)
print(f"λ̂={lam:.2f}/min E[A]={media:.2f} CV={var**0.5/media:.2f}")
# Generar 5 llegadas Poisson λ=0.5/min (media A=2)
import random
random.seed(23)
lam, t = 0.5, 0.0
for i in range(5):
    t += random.expovariate(lam)  # A ~ Exp(λ)
    print(f"L{i+1} en t={t:.2f} (A medio {1/lam})")
# Con D sería: t += 1/lam  (siempre 2.0)

06 · Exploración

Laboratorio: misma λ, distinto azar

Fijamos un horizonte T = 20 min y una tasa λ. Con Regular caen cada 1/λ clavado; con Poisson sorteamos A ~ Exp(λ); con Ráfagas mezclamos huecos cortos y largos (CV > 1). La línea muestra cada llegada como un palito; abajo, los interarribos. Subí λ y cambiá el régimen: verás que el conteo crece igual, pero los choques solo aparecen con azar.

EXPERIMENTO 23

λ manda el conteo, CV manda los choques

λ̂ = N/T · E[A] ≈ 1/λ

Los resultados numéricos aparecen debajo.
Llegadas N0
λ̂ = N/T0
A medio0
Hueco máximo0

Mueve λ y el régimen para comparar.

Arriba: cada marca es una llegada en el tiempo. Abajo: barras de cada interarribo A (la línea punteada es 1/λ). Con Regular todas igualan la línea; con Poisson y Ráfagas se dispersan.

Preguntas para explorar

  1. Con λ=0.5 y T=20, ¿cuántas llegan en Regular? ¿Y en Poisson (aprox.)? ¿Por qué rondan el mismo N?
  2. En Regular, ¿hay algún interarribo menor a 1 min? ¿Y en Poisson con la misma λ? ¿Qué implica para la cola?
  3. Pasá a Ráfagas con λ=0.5: ¿qué le pasa al hueco máximo y a los choques (A < 0.5)?
Ver respuestas sugeridas
  1. Regular: 10 exactas (20/2); Poisson: ~10 (λT = 10, ± √10). El mismo λ manda el conteo medio en cualquier régimen.
  2. Regular: ninguno (todos A=2). Poisson: varios cortos (<1) y algún hueco largo: los cortos son choques que, con servicio lento, hacen fila.
  3. El máximo se estira (huecos de 5–8 min) y aparecen tandas de A < 0.5: rachas y vacíos conviviendo, CV > 1, la peor cola de las tres.

07 · Comprensión

Confusiones frecuentes

«Si λ < μ, no hay cola»

Solo vale con llegadas regulares. Con Poisson, dos que chocan esperan aunque el servidor dé abasto en promedio: la variabilidad fabrica cola.

«λ es una probabilidad»

λ es tasa (cantidad por tiempo), puede valer 30/h o 200/s. La probabilidad vive en Poisson(λT) y en Exp(λ), no en λ sola.

«Exponencial es “sin patrón”, entonces es pareja»

Al revés: la exponencial es la más despareja de las bien portadas (CV=1): muchos huecos cortos y pocos larguísimos. Pareja es D (CV=0).

«Con medir la media alcanza»

Media sin dispersión engaña: dos sistemas con λ=30/h y CV 0 y 2 tienen esperas abismalmente distintas. Reportá siempre (λ, CV).

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: estimar λ

En 2 horas cayeron 60 clientes. ¿λ por hora y por minuto? ¿E[A]?

N, T_h = 60, 2.0
lam_h = N / T_h
lam_m = lam_h / 60
print(f"λ={lam_h}/h = {lam_m:.2f}/min, E[A]={1/lam_m:.1f} min")
Ver solución razonada

λ = 30/h = 0.5/min, E[A] = 2 min. Ese 2 es la línea punteada del laboratorio en Regular.

Ejercicio 2: sortear un Poisson

Con λ=0.5/min, ¿cómo sale un interarribo? Generá 3 y compará con el fijo D.

import random
random.seed(1)
lam = 0.5
print([round(random.expovariate(lam), 2) for _ in range(3)], "vs D:", [1/lam]*3)
Ver solución

Algo como [0.29, 2.56, 1.59] vs [2.0, 2.0, 2.0]: el primero choca (0.29) y huequea (2.56) con la misma media.

Ejercicio 3: contar en un intervalo

Si λ=0.5/min, ¿cuántas espero en 10 min? ¿Con qué dispersión?

Ver una posible respuesta
lam, T = 0.5, 10
media = lam * T
print(f"media {media}, desvío {media**0.5:.2f} (Poisson: var = media)")

5 ± 2.24: pedir “exactamente 5” es no entender Poisson. En simulación, a veces caen 2 y a veces 9.

09 · Síntesis

Ideas para recordar

  • Llegadas = instantes; λ = N/T manda el conteo, A = huecos manda el ritmo fino.
  • E[A] = 1/λ siempre; lo que cambia es la dispersión: CV 0 (D), 1 (M), >1 (G/ráfagas).
  • Poisson + exponencial es el defecto sin agenda: sin memoria, con choques inevitables.
  • En Python: expovariate(λ) para M, constante para D; agenda t + A en el FEL.
  • A igual λ, más CV → más Wq: medí y reportá (λ, CV), no solo λ.

En el próximo tema mediremos la otra mitad del trípode: el proceso de servicio.