Simulación de Eventos Discretos · Tema 35

Tiempo medio de espera

Wq: cuánto se espera antes de ser atendido — los minutos que el cliente vive y el SLA que el gerente firma.

01 · Punto de partida

L cuenta cabezas, Wq cuenta minutos vividos

Decir “hay 8 en cola” no dice si esperan 30 segundos u 8 minutos. El cliente no vive Lq: vive Wq, los minutos entre llegar y sentarse. Por eso los SLA se escriben en Wq —“80% espera menos de 2 min”— y no en cabezas.

Wq y Lq son dos caras por Little (Lq = λWq), pero se miden distinto: Lq integra niveles en el tiempo, Wq promedia vidas por cliente (ini − arr).

  • ¿Qué cuenta Wq y qué deja fuera (servicio)?
  • ¿Cómo se mide vida por vida sin sesgar?
  • ¿Media o percentil: qué pide el SLA?
  • ¿Cómo se ata Wq con Lq para auditar?

02 · Definición

Espera, sistema y servicio

Wq

En cola

De llegar a empezar a ser atendido. Ceros incluidos: el que no espera aporta 0 a la media.

W

En sistema

W = Wq + E[S]: espera + atención. Es lo que el cliente cuenta de puerta a puerta (Tema 36).

%

SLA

P(Wq ≤ t): fracción que espera hasta t. La media no alcanza: el SLA mira la cola de la distribución.

M/M/1 con S medio 2 (μ = 0.5): la espera en minutos.
ρ (λ)WqP(no espera)Lectura
0.50 (0.25)2 min50%La mitad pasa directo
0.80 (0.40)8 min20%Casi todos esperan algo
0.90 (0.45)18 min10%Esperar es la norma

03 · El corazón: promediar vidas

Cada cliente aporta su espera (incluso cero)

vida = ini − arr→promediar admitidos→Little audita

En M/M/1 la espera tiene forma mixta: masa 1−ρ en cero (los afortunados) y cola exponencial ρ·e−(μ−λ)t para el resto. La media resume, pero el SLA vive en la cola: P(Wq > 8) con ρ = 0.5 es ~7%, con ρ = 0.9 es ~50%.

  1. 1
    Registrar por admitido.

    Al iniciar servicio: wq = ini − arr. Los perdidos (K finita) no aportan: nunca esperaron dentro.

  2. 2
    Incluir los ceros.

    El que entra directo aporta 0. Promediar solo a “los que esperaron” infla Wq al dividir por menos.

  3. 3
    Cuidar el cierre.

    Al cerrar T, los que siguen en cola no tienen vida completa: se excluyen o se alarga T (con ρ alta, sesgan).

  4. 4
    Auditar con Lq.

    Lq ≈ λWq con λ de admitidos. Si difiere >10% en régimen, revisar áreas o vidas.

Masa en cero
P(Wq = 0) = 1 − ρ (M/M/1, PASTA). El histograma siempre arranca con una barra alta en 0 que se hunde con ρ.
Cola exponencial
P(Wq > t) = ρ·e−(μ−λ)t (M/M/1). De ahí el SLA directo sin simular.
Media vs percentil
La media dimensiona capacidad; el percentil firma SLA. Con ρ alta, w95 ≈ 3× la media (típico exponencial).
Truncamiento
Las vidas largas no terminan antes de T y faltan del promedio: Wq sim queda corta con T chico y ρ alta.

Media Wq

Para dimensionar

Un número para comparar c = 2 vs 3 y para Little. Barata de estimar, ciega a los extremos.

Distribución / SLA

Para firmar

“80% en 20 s” se lee en P(Wq ≤ t), no en la media. Exige histograma o fórmula de cola.

04 · Ejemplos

Cuatro esperas con nombre

  1. 1
    Banco Wq = 4 min.

    ρ = 0.67, S = 2: 4 de espera + 2 de atención = 6 en sistema.

  2. 2
    Call center SLA 80/20.

    Wq media 0.2 min pero SLA en P(Wq ≤ 20 s): la media sola no vende.

  3. 3
    Guardia por clases.

    Wq VIP ≈ 0, Wq leve = 40 min: una sola Wq global escondería la urgencia (Tema 39).

  4. 4
    Peaje Wq = 0.

    De noche, casi todos pasan directo: media ≈ 0 con máximos de 1 min.

05 · Representación en Python

Vidas, media y cola en tres líneas

Guardar (arr, ini) por cliente alcanza para Wq, Little y SLA empírico.

Python en tu navegador. El primero predice Wq y SLA M/M/1; el segundo mide vidas y audita con Lq. Incluí los ceros.

# Wq y SLA M/M/1: lam=0.25, mu=0.5
import math
lam, mu = 0.25, 0.5
Wq = lam / (mu * (mu - lam))
print(f"Wq={Wq:.1f} P(no espera)={1-lam/mu:.0%} P(Wq>8)={lam/mu*math.exp(-(mu-lam)*8):.1%}")
# Medir Wq desde vidas (ini-arr) y auditar Lq=lam*Wq
vidas = [0, 0, 1.5, 3.0, 0, 7.5]  # incluye ceros
Wq = sum(vidas) / len(vidas)
print(f"Wq={Wq:.2f} Lq={0.25*Wq:.2f} (lam=0.25)")

06 · Exploración

Laboratorio: el histograma de la espera

Simulamos M/M/1 hasta T = 200 (semilla = réplica) y agrupamos vidas en 0, (0,2], (2,4], (4,8], >8. Barras lima = teoría M/M/1 (masa 1−ρ en 0 + cola exponencial); teal = sim. La línea marca Wq teórica. Subí ρ y mirá cómo se vacía el 0 y crece la cola.

EXPERIMENTO 35

Media y distribución juntas

P(Wq=0)=1−ρ · P(Wq>t)=ρe⁻⁽μ⁻λ⁾ᵗ

Los resultados numéricos aparecen debajo.
ρ0
Wq sim / teórica0
P0 sim / teórica0
Clientes N0

Subí ρ para vaciar el cero.

Parejas por tramo: lima = teoría, teal = sim. La línea blanca es Wq teórica. Con ρ alta la masa se muda a la derecha.

Preguntas para explorar

  1. Con ρ=0.5: ¿P0 sim ≈ 0.5? ¿Wq sim ≈ 2? ¿Qué tramo concentra la cola?
  2. Con ρ=0.875: ¿qué fracción supera 8 min en teoría? ¿La sim la ve con T=200?
  3. ¿Por qué el tramo >8 tiembla más entre réplicas que el 0?
Ver respuestas sugeridas
  1. Sí (~0.48–0.52 y ~1.7–2.3): la cola vive en (0,4]; el >8 es residual (~7% teórico).
  2. P(Wq>8) = 0.875·e−0.0625·8 ≈ 53%: más de la mitad. La sim la ve, con ±10% entre réplicas.
  3. Son eventos menos frecuentes en términos relativos a su peso: pocas vidas ⇒ ruido. Para colas finas, más T o más réplicas.

07 · Comprensión

Confusiones frecuentes

«Wq incluye la atención»

No: Wq termina al empezar el servicio. Con S = 2 y Wq = 4, el cliente vive 6 (W). Mezclarlos sobrestima el SLA en E[S].

«Promedio solo a los que esperaron»

Eso es espera condicional, no Wq: divide por menos y la infla. Wq incluye los ceros por definición.

«Con la media alcanza para el SLA»

Dos sistemas con Wq = 2 (ρ = 0.5 Exp vs D con pico) tienen P(Wq>8) de 7% vs 0%: el SLA vive en la distribución.

«Wq = Lq siempre»

Solo si λ = 1 (unidades). En general Wq = Lq/λ: 8.1 en cola con λ = 0.45 son 18 min, no 8.1.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: tabla Wq

μ=0.5, λ=0.25, 0.4, 0.45. ¿Wq y P0?

mu = 0.5
for lam in [0.25, 0.4, 0.45]:
    print(f"lam={lam} Wq={lam/(mu*(mu-lam)):.1f} P0={1-lam/mu:.2f}")
Ver solución razonada

2.0/8.0/18.0 min con P0 0.5/0.2/0.1: la media ×9 mientras la masa en cero se hunde.

Ejercicio 2: SLA 80/20

M/M/8 con C≈0.36, cμ−λ=2. ¿P(Wq ≤ 1/3)?

import math
print(f"{1 - 0.36*math.exp(-2/3):.0%}")  # ~82%: el SLA se lee en la cola, no en Wq
Ver solución

~82%: cumple aunque Wq media sea 0.18 min (11 s). La media sola no lo diría.

Ejercicio 3: auditar con Little

Lq = 3.2, λ = 0.4. ¿Wq? ¿W con S = 2?

Ver una posible respuesta
Lq, lam, S = 3.2, 0.4, 2.0
print(f"Wq={Lq/lam:.1f} W={Lq/lam + S:.1f}")  # 8.0 y 10.0

Wq = 8.0, W = 10.0: si tu simulador dice otra cosa lejos, revisar vidas o áreas.

09 · Síntesis

Ideas para recordar

  • Wq = ini − arr promediada con ceros; W = Wq + E[S].
  • M/M/1: masa 1−ρ en 0 y cola ρ·e−(μ−λ)t; media λ/(μ(μ−λ)).
  • El SLA vive en P(Wq ≤ t), no en la media.
  • En Python: vidas (arr, ini) + histograma + Little Lq = λWq.
  • Cuidar cierre en T: las vidas sin terminar sesgan Wq a la baja.

En el próximo tema sumamos la atención: el tiempo medio en el sistema.