Simulación de Eventos Discretos · Tema 34

Longitud media de la cola

Lq y L como medidas de congestión — cuántos hay dentro, cuántos esperan y cuánta área acumula la espera.

01 · Punto de partida

La foto engaña, la película mide

Pasás por el banco y ves 5 personas. ¿Hay congestión? Si 3 están en cajas y 2 esperan, es flujo sano; si 1 está en caja y 4 esperan, es cola. La foto N = 5 no distingue; el par (L, Lq) sí: L cuenta a todos, Lq solo a los que esperan.

Estas dos medias son el termómetro de congestión: se miden como área bajo la curva (Tema 20), se predicen con Erlang y se auditan con Little. Todo dimensionamiento serio las reporta.

  • ¿Qué cuenta L y qué cuenta Lq? ¿Cómo se relacionan?
  • ¿Cómo se mide cada una desde la traza N(t)?
  • ¿Qué valores alarman y cómo se bajan?
  • ¿Por qué Lq/L dice dónde duele?

02 · Definición

Sistema, espera y su diferencia

L

En sistema

Media de N(t): esperan + en servicio. Es lo que ve una foto al azar (promedio temporal).

Lq

En cola

Media de Nq(t) = max(0, N−c): solo los que esperan. Es la fila física.

+a

Puente

L = Lq + a, con a = λ/μ (c = 1: +ρ). Los ocupados medios no dependen del orden.

M/M/1: la misma ρ, dos lecturas (L incluye al que se atiende).
ρLLqFracción en cola Lq/L
0.501.00.550%: mitad espera, mitad se atiende
0.804.03.280%: casi todos esperan
0.909.08.190%: el servicio es anécdota

03 · El corazón: el área manda

Medir es integrar, no contar fotos

traza N(t)→área bajo curva→dividir por T

Cada nivel N aporta N × duración al área; L es área/T. Lq igual con Nq = max(0, N−c). Por eso un pico de 10 durante 1 min pesa lo mismo que 1 durante 10 min: la congestión es nivel × tiempo, no máximo.

  1. 1
    Registrar N(t).

    En cada evento (arribo/partida) anotar nivel y duración hasta el próximo.

  2. 2
    Integrar áreas.

    Área = Σ N·Δt; áreaq = Σ max(0,N−c)·Δt. Sin atajos: el promedio de fotos en eventos sesga.

  3. 3
    Dividir por T.

    L = área/T, Lq = áreaq/T. Descartar calentamiento (Tema 41).

  4. 4
    Auditar con Little.

    L ≈ λW y Lq ≈ λWq (Temas 35–37): si no cierran, el área o las vidas están mal.

Promedio temporal
Lo que ve el reloj: área/T. Es L y Lq. Lo que ve el que llega (PASTA) coincide solo con Poisson.
Lq/L
Fracción esperando: = ρ en M/M/1. Si tiende a 1, el sistema es sala de espera con un servidor de adorno.
Máximo vs media
El máximo asusta, la media dimensiona. Un pico de 20 con L = 2 pide absorber rachas, no triplicar c.
L con pérdidas
Con K finita, L se achata por fuga: L baja no significa salud. Reportar (L, Pb) juntos.

L (sistema)

Foto completa

Incluye servicio: sirve para Little, costos de inventario y SLA de permanencia. Nunca es menor que a.

Lq (cola)

Fila física

Lo que el cliente sufre y el gerente ve. Es la que mata el SLA y la que baja al sumar c o bajar Cs².

04 · Ejemplos

Cuatro termómetros

  1. 1
    Banco ρ = 0.67.

    L ≈ 2.0, Lq ≈ 1.36: dos dentro, uno y pico esperando. Tenso viable.

  2. 2
    Call center a = 6, c = 8.

    L ≈ 6.5 (6 hablando + 0.5 en espera): sala casi sin fila visible.

  3. 3
    Impresora ρ = 0.9.

    L = 9, Lq = 8.1: pasillo lleno de gente con hojas en la mano.

  4. 4
    Router con buffer 50.

    Lq ≈ 40 con Pb 5%: cola “sana” solo porque la fuga la poda (ver Pb junto a L).

05 · Representación en Python

Fórmulas y área en dos bloques

La teoría predice con ρ; la medición integra la traza. Ambas separan sistema y cola.

Python en tu navegador. El primero calcula L/Lq M/M/1; el segundo mide ambas desde eventos. Cambiá ρ y mirá Lq/L.

# L y Lq M/M/1 con c=1
def mm1_L(rho):
    return {"L": rho/(1-rho), "Lq": rho**2/(1-rho), "frac_cola": rho}

for rho in [0.5, 0.8, 0.9]:
    print(rho, {k: round(v, 2) for k, v in mm1_L(rho).items()})
# Medir L y Lq desde traza (t, N) con c=1
traza = [(0, 0), (1, 1), (3, 2), (4, 1), (6, 0)]
area = areaq = 0.0
for (t0, n0), (t1, n1) in zip(traza[:-1], traza[1:]):
    area += n0 * (t1 - t0)
    areaq += max(0, n0 - 1) * (t1 - t0)
T = traza[-1][0] - traza[0][0]
print(f"L={area/T:.2f} Lq={areaq/T:.2f}")

06 · Exploración

Laboratorio: ver el área que promediás

Simulamos M/M/1 hasta T = 150 (semilla = réplica). La escalera lima es N(t); el sombreado naranja es la parte en cola (N−1 cuando N ≥ 1). Las líneas punteadas son L (blanca) y Lq (teal) teóricas. Subí λ y mirá cómo el naranja se come la escalera.

EXPERIMENTO 34

L y Lq: sistema contra fila

L = área/T · Lq = áreaq/T · T=150

Los resultados numéricos aparecen debajo.
ρ0
L sim / teórica0
Lq sim / teórica0
Fracción en cola0%

Subí λ para naranjear la escalera.

Lima = N(t); naranja = porción en cola; blanca = L teórica; teal = Lq teórica. Con ρ alta casi todo es naranja.

Preguntas para explorar

  1. Con ρ=0.5: ¿L sim ≈ 1 y Lq ≈ 0.5? ¿Qué mitad de la escalera es naranja?
  2. Con ρ=0.875 (λ≈0.44, S=2): ¿L teórica? ¿La sim la alcanza con T=150?
  3. ¿Por qué Lq/L sim ≈ ρ? ¿Qué pasa con esa fracción cuando ρ→1?
Ver respuestas sugeridas
  1. Sí (~0.9–1.1 y ~0.4–0.6): la mitad del área es espera, la mitad servicio.
  2. L = 7: la sim ronda 6–8 (T=150 apenas alcanza; con ρ alta el régimen tarda).
  3. Porque Lq = ρL en M/M/1: al acercarse a 1, casi todo lo que hay está esperando, no atendiéndose.

07 · Comprensión

Confusiones frecuentes

«L es la fila»

L incluye servicio: con c = 3 y L = 4, solo 1 espera en media. La fila es Lq = L − a.

«Lq = 0 significa sistema vacío»

No: Lq = 0 con L = 0.9 es un servidor ocupado sin fila (flujo sano). Vacío es L ≈ 0.

«Promedio N en arribos y listo»

Ese promedio ve más los picos (sesgo): L se integra en tiempo, no en eventos. Con Poisson la diferencia es sutil; con ráfagas, enorme.

«L baja siempre es buena»

Con K finita, L baja por fuga (Pb alta): sala vacía porque echan gente. Mirar (L, Pb) juntos.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: tabla L/Lq

Con ρ = 0.5, 0.8, 0.9: ¿L, Lq y fracción en cola?

for rho in [0.5, 0.8, 0.9]:
    print(f"rho={rho} L={rho/(1-rho):.1f} Lq={rho**2/(1-rho):.1f}")
Ver solución razonada

1.0/0.5, 4.0/3.2, 9.0/8.1: la fracción en cola (ρ) delata dónde duele.

Ejercicio 2: área a mano

Traza (0,0)→(2,2)→(5,2)→(6,0) con c=1: ¿L y Lq en T=6?

# área N: 0*2 + 2*3 + 2*1 = 8 -> L=1.33; áreaq: 0 + 1*3 + 1*1 = 4 -> Lq=0.67
print(f"L={8/6:.2f} Lq={4/6:.2f}")
Ver solución

L ≈ 1.33, Lq ≈ 0.67: la mitad espera. El pico de 2 pesa por sus 4 minutos de duración.

Ejercicio 3: de Lq a decisión

M/M/1 con Lq = 8.1 (ρ=0.9). ¿Lq con c=2 (ρ=0.45, mismo λ)? Anticipa el Tema 29.

Ver una posible respuesta
# M/M/2 con a=0.9: C≈0.45, Lq=C*rho/(1-rho)≈0.37 (vs 8.1)
print("El segundo servidor parte Lq ×20: la cola se vuelve anécdota")

Lq ≈ 0.37: de pasillo lleno a sillas vacías. Medir Lq antes y después justifica el salario.

09 · Síntesis

Ideas para recordar

  • L = sistema, Lq = espera; L = Lq + a (c=1: +ρ).
  • Se miden por área/T, no por fotos ni por promedio en arribos.
  • M/M/1: L = ρ/(1−ρ), Lq = ρ²/(1−ρ); Lq/L = ρ.
  • En Python: traza [(t,N)] + áreas; teoría como hipótesis.
  • Reportá (L, Lq, Pb): L sola con fuga miente.

En el próximo tema mediremos la otra cara: el tiempo medio de espera.