Simulación de Eventos Discretos · Tema 21

Introducción a la teoría de colas

El marco matemático de las esperas — llegadas, cola y servicio con fórmulas que predicen y validan tus simulaciones.

01 · Punto de partida

Del experimento a la fórmula (y de vuelta)

Durante 20 temas simulaste: generaste llegadas, procesaste salidas y mediste L y Wq. Ahora aparece una pregunta mágica: ¿y si esas medidas se pudieran predecir con una fórmula, sin simular? Esa es la teoría de colas: matemática de llegadas + espera + servicio que, bajo supuestos claros, entrega L, Wq y ρ exactos.

No reemplaza la simulación: la valida y la guía. Si tu simulador dice Wq=5 y la fórmula dice 5.1, dormís tranquilo; si dice 12, hay bug. Y para dimensionar rápido (“¿1 o 2 cajas?”), la fórmula responde en un renglón.

  • ¿Qué tres piezas forman todo sistema de colas?
  • ¿Qué cinco letras (L, Lq, W, Wq, ρ) resumen su rendimiento?
  • ¿Cómo verifico mi simulador con una ley universal?
  • ¿Cuándo la fórmula alcanza y cuándo hay que simular?

02 · Definición

Llegadas, espera y servicio: el trípode

λ

Llegadas

Ritmo y variabilidad: cuántos por unidad (λ) y cuán irregulares (fijos o exponenciales). (Tema 23)

≣

Cola

Dónde y cómo esperan: capacidad, disciplina FIFO/prioridades. (Temas 8, 25–27)

μ

Servicio

Rapidez y servidores: tasa μ por servidor y nº c. ρ = λ/(cμ) decide la estabilidad.

Las cinco medidas de todo sistema de colas.
MedidaQué esRelación
L / LqEn sistema / solo en colaL = Lq + cρ (los en servicio)
W / WqEn sistema / solo esperaW = Wq + 1/μ
ρUtilización por servidorρ = λ/(cμ) < 1 para estabilidad
LittlePuente universalL = λW y Lq = λWq

03 · El puente

Simulación y teoría se auditan mutuamente

supuestos → fórmula→valida simulador→simulador explora lo real
  1. 1
    La fórmula valida.

    En casos markovianos (M/M/1, M/M/c) hay fórmulas exactas: tu simulador debe acercarse. Si no, el bug está en tu código, no en Erlang.

  2. 2
    La simulación extiende.

    Con prioridades, capacidades finitas o redes, la fórmula no llega: el simulador validado explora lo real sin miedo.

  3. 3
    Little audita siempre.

    L ≈ λW vale bajo supuestos amplísimos (conservación + régimen). Si tu corrida la viola mucho, algo está mal medido.

Modelo analítico
Fórmula cerrada bajo supuestos (llegadas Poisson, servicios exponenciales). Rápida y exacta donde vale.
Régimen (ρ < 1)
La teoría clásica habla del equilibrio estable: si llega más de lo que se atiende, no hay equilibrio que predecir.
Notación de Kendall
Código A/B/c/K/N/D del sistema (Tema 30): M/M/1 es el “Hola mundo” de las colas.
Validación cruzada
Simulación ≈ teoría en casos simples → luz verde para casos sin fórmula. (Temas 35–36)

Teoría

Rápida donde vale

Un renglón para M/M/1. Ciega fuera de sus supuestos (prioridades raras, redes con bloqueos).

Simulación

Universal donde se valida

Cualquier política y red, al costo de programar y replicar. Validada con teoría, es imbatible.

04 · Ejemplos

Los mismos mundos, ahora con letras

Sistemas con sus tasas.
Sistemaλ (llegadas)μ y c (servicio)ρ = λ/cμ
Banco (A=2, S=3, c=1)0.5/minμ≈0.33, c=11.5 → inestable
Banco (A=4, S=2, c=1)0.25/minμ=0.5, c=10.5 → estable
Web (100 req/s, 8 workers)100μ=20, c=80.625 → estable

05 · Representación en Python

Del simulador a la fórmula en tres líneas

Con λ y μ sacás ρ y el M/M/1 predice; con tu simulación verificás Little. El primer bloque predice, el segundo audita.

Python en tu navegador. El primero calcula M/M/1 estable; el segundo chequea Little con tus números simulados. Cambiá λ y mirá ρ.

# M/M/1 estable: A=4 (λ=0.25), S=2 (μ=0.5)
lam, mu = 1/4, 1/2
rho = lam / mu
L = rho / (1 - rho)
W = L / lam
print(f"ρ={rho:.2f} L={L:.2f} W={W:.2f}")  # ρ=0.50 L=1.00 W=4.00
# Auditoría Little con números de tu simulador
lam, L, W = 0.25, 1.02, 4.0
print("λW =", round(lam * W, 2), "| L =", L, "| error:", round(abs(L - lam*W)/L*100, 1), "%")

06 · Exploración

Laboratorio: Little audita tu simulador

Simulamos A/S exactos hasta T=12 y calculamos L (área/12) y λW (llegadas/12 × vida media de completados). Las barras deben coincidir: si difieren mucho, hay inestabilidad (ρ>1), horizonte corto o bug. Estabilizá (A grande, S chico) y mirá el error derretirse.

EXPERIMENTO 21

El auditor universal

L ≈ λW · error = |L − λW| / L

Los resultados numéricos aparecen debajo.
L (área/12)0
λW0
Error Little0%
ρ ingenua (S/A)0

Estabilizá para validar.

Barras lima (L) y teal (λW) casi gemelas en régimen; separadas en avalancha. ρ>1 anticipa la divergencia.

Preguntas para explorar

  1. Con A=4, S=2 (ρ=0.5), ¿el error es chico? ¿Qué dice de tu medición?
  2. Con A=1, S=3 (ρ=3), ¿L y λW coinciden? ¿Por qué Little “falla” aquí?
  3. ¿Qué tres condiciones pedirías para exigir error <10%?
Ver respuestas sugeridas
  1. Sí (pocos %): área, conteo y vidas están bien cobrados; el simulador pasa la auditoría.
  2. No: sistema inestable sin régimen (la cola crece) + horizonte corto + vidas truncadas de no completados. Little no falla: no vale sin régimen.
  3. ρ<1, horizonte largo con warmup y vidas de completados bien medidas (o Lq=λWq con iniciados). Tema 37 lo formaliza.

07 · Comprensión

Confusiones frecuentes

«La teoría reemplaza la simulación»

La reemplaza solo donde valen sus supuestos. Fuera (prioridades, redes, finitos), la simulación validada es la única vía.

«Little vale siempre exacto»

Vale en régimen con conservación. En avalancha, con pérdidas o en 12 pasos con arranque raro, es aproximada.

«ρ > 1 es solo “muy ocupado”»

ρ>1 es inestable: la cola crece sin cota y no hay equilibrio que predecir. No es “trabajar mucho”, es “no dar abasto”.

«Si difieren, la fórmula está mal»

Primero se audita el simulador (área, ceros, denominador, cierre). La fórmula markoviana lleva un siglo validada.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: ρ decide

Con A=2, S=3, c=1 y c=2, ¿estable o no?

for c in [1, 2]:
    rho = (3 / 2) / c
    print(f"c={c} ρ={rho:.2f}", "estable" if rho < 1 else "inestable")
Ver solución razonada

c=1: ρ=1.5 inestable; c=2: ρ=0.75 estable. La misma demanda, otro dimensionamiento: ρ decide.

Ejercicio 2: auditar con Little

L=2.5, λ=0.5, W=5.0: ¿pasa la auditoría?

L, lam, W = 2.5, 0.5, 5.0
print("λW =", lam * W, "| error:", abs(L - lam*W) / L * 100, "%")
Ver solución

λW=2.5, error 0%: auditoría perfecta (o números redondos de juguete). En real se exige <5–10%.

Ejercicio 3: M/M/1 de bolsillo

λ=0.25, μ=0.5: predecí L y W con las fórmulas del bloque Python.

Ver una posible respuesta
lam, mu = 0.25, 0.5
rho = lam / mu
L, W = rho/(1-rho), (rho/(1-rho))/lam
print(f"ρ={rho} L={L} W={W}")  # 0.5, 1.0, 4.0

Predicción para validar tu simulador del mismo caso: si simula otra cosa lejos, hay bug (o no hay régimen).

09 · Síntesis

Ideas para recordar

  • Cola = λ + espera + c×μ; se resume en L, Lq, W, Wq, ρ con L=λW.
  • Teoría valida simulación en casos simples; simulación explora lo real sin fórmula.
  • Little audita siempre en régimen: si falla mucho, revisar medición.
  • ρ<1 es la puerta del equilibrio; ρ>1 es avalancha, no “mucho trabajo”.
  • Reportar tasas junto a medidas o nada es replicable.

En el próximo tema separaremos clientes y servidores: quién espera y quién atiende.