01 · Punto de partida
La misma cola con guardapolvo distinto
El banco de las 12, la guardia un sábado, el registro civil sin turno: mismos modelos, otra piel. Lo que cambia es el contexto: picos marcados (mediodía, lunes), clases innegociables (triage), abandono visible (el que se va) y fila física que se ve y se sufre.
Aplicar el curso acá es traducir: calle → Kendall + ventanas → Erlang/sim → dotación por turnos → pilotear y re-medir.
- ¿Cómo mido λ y S por ventana (no por día)?
- ¿Qué modelo toca por caso (M/M/c, prioridades, abandono)?
- ¿Fila única o ventanillas especializadas?
- ¿Cómo informo la espera para que duela menos?
02 · Definición
Picos, trámites y nivel visible
Picos
λ por ventana (mañana/pico/tarde), no media diaria. El pico del mediodía puede triplicar el valle.
Trámites
S mixto: 80% rápido + 20% trabado (G). Caja rápida para enanos + pooling para el resto.
Nivel visible
Fila física, espera informada y abandono. Lo que se ve se gestiona (psicología de la espera).
| Caso | Demanda pico | Modelo | Dotación |
|---|---|---|---|
| Banco mediodía | λ = 1.4/min | M/M/c + caja rápida | c = 4 (SLA Wq ≤ 4) |
| Guardia sábado | λ = 0.5, 3 clases | PRIO no expulsiva + abandono | Médicos por clase + triage |
| Registro con turnos | D (cita) + M (espontáneo) | D+M mixto, sim | Cupo de espontáneos por hora |
03 · El corazón: la receta de ventanilla
Medir, clasificar, dotar por turnos, pilotear
- 1Medir por ventana.
Conteo de arribos por hora + cronómetro de S por trámite + tasa de abandono. Una semana típica, no un día raro.
- 2Clasificar.
Kendall por ventanilla + clases (triage, premium) + abandono esperado. El modelo lo dicta el dato.
- 3Dotar por turnos.
Erlang C o sim por ventana: c pico ≠ c valle. La plantilla única sobra a la mañana y falta al mediodía.
- 4Pilotear visible.
Fila única, número, espera informada en pantalla, caja rápida señalizada. Medir de nuevo: el piloto es otro experimento.
- Turnos que siguen λ(t)
- Partir el día en ventanas estables y dotar cada una: el hydraulics de la atención pública.
- Caja rápida
- Ventanilla solo-trámites-cortos (SPT físico): parte la media sin software. El cartel es el algoritmo.
- Abandono (reneging)
- El que se va al ver la fila: alivia Wq y miente en L. Se modela con paciencia Exp o umbral.
- Espera informada
- Número + tiempo estimado visible: baja el abandono y la queja a igual Wq (psicología medible).
Plantilla única
Simple y cara
Un c para todo el día: sobra en valle (ocio pago) y falta en pico (fuga). Solo vale sin picos.
Turnos por ventana
Sigue la curva
c(t) con λ(t): pico reforzado, valle liviano. Exige medición y flexibilidad de personal.
04 · Ejemplos
Cuatro calles con número
- 1Banco mediodía (λ = 1.4, S = 2).
c = 3 da Wq ≈ 8.8 (SLA ≤ 4 roto); c = 4 da ≈ 0.7. Se abre la 4ª solo al mediodía.
- 2Guardia con triage.
PRIO 1-2-3 + abandono de leves: Wq rojo ≈ 0, verde pactado. Sin clases, el rojo espera como un verde.
- 3Registro con turnos + espontáneos.
Cupos D cada 10 min + cola M con tope/hora: la mezcla se simula, no se promedia.
- 4Call center público con IVR.
El IVR filtra 30% (baja λ efectiva) y el abandono podas picos: λef manda.
05 · Representación en Python
Dotación por ventana en dos bloques
El día como lista de (ventana, λ): Erlang por ventana + Little para sillas de espera.
Python en tu navegador. El primero dota cada ventana; el segundo dimensiona sillas con Little. Cambiá el pico.
# Dotar cada ventana (M/M/c, S=2, SLA Wq<=4)
import math
def Wq_mmc(lam, mu, c):
a, rho = lam/mu, lam/mu/c
s = sum(a**k/math.factorial(k) for k in range(c))
C = (a**c/(math.factorial(c)*(1-rho)))/(s + a**c/(math.factorial(c)*(1-rho)))
return C/(c*mu-lam)
for v, lam in [("valle", 0.5), ("pico", 1.4), ("tarde", 0.7)]:
c = next(c for c in [2, 3, 4, 5] if lam/(0.5)/c < 1 and Wq_mmc(lam, 0.5, c) <= 4)
print(f"{v}: lam={lam} -> c={c}")
# Sillas de espera con Little: Lq pico + margen
lam, Wq = 1.4, 0.7 # con c=4
print(f"sillas={lam*Wq:.1f} -> 2-3 sillas + fila de pie (pico)")
06 · Exploración
Laboratorio: el día con tres ventanas
Día con valle (35% del pico), pico (tu λ) y tarde (50%), S fijo en tu valor, dotación c pareja todo el día, SLA Wq ≤ 4. Las barras comparan Wq por ventana; el semáforo dice qué ventanas cumplen. Subí el pico y mirá cómo solo él se rompe —argumento para el turno refuerzo.
El pico pide su turno
valle 35% · pico 100% · tarde 50% · SLA≤4
Subí c o bajá el pico para cumplir las tres.
Tres barras (valle/pico/tarde) contra la recta SLA = 4. Verde cumple, naranja rompe: el refuerzo va donde rompe.
Preguntas para explorar
- Default (λ=1.4, c=3, S=2): ¿qué ventanas cumplen? ¿Wq pico?
- Subí a c=4: ¿pico? ¿Valía la 4ª solo por el pico?
- Bajá S=1.5 (agilizar) con c=3: ¿pico? ¿Turno o proceso?
Ver respuestas sugeridas
- Valle y tarde cumplen; pico Wq ≈ 8.8 rompe (ρ = 0.93): 1 de 3.
- Pico ≈ 0.7: cumplen 3 de 3. La 4ª se abre solo 12–14 h (turno refuerzo).
- Pico ≈ 0.8: cumple sin contratar (ρ = 0.7). Si agilizar es posible, rinde antes que el puesto.
07 · Comprensión
Confusiones frecuentes
«Dimensiono por media diaria»
La media esconde el pico que fuga: se dota por ventana pico (y se valida el día ponderado).
«Ignoro a los que se van»
El abandono alivia Wq y miente en L: medirlo y usar λef, o la “mejora” es fuga disfrazada.
«Especializo todo por trámite»
Cada especialidad parte el pooling: solo lo que exige SLA de clase (triage); el resto, fila única.
«La espera no se gestiona»
Número, tiempo estimado y espera ocupada bajan abandono y queja a igual Wq: es intervención barata y medible.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: turno pico
λ=1.4, S=2, SLA ≤4. ¿c? ¿Wq con ese c?
# c=3: 8.8 (rompe); c=4: ~0.7 (cumple) -> turno pico con 4
print("El pico pide su turno: 4 de 12 a 14")
Ver solución razonada
c = 4 solo en pico (ρ = 0.7): el resto del día sobra. Turno refuerzo, no plantilla.
Ejercicio 2: sillas con Little
λ=1.4, Wq=0.7. ¿Lq? ¿Sillas?
print(f"Lq={1.4*0.7:.1f} -> 2 sillas + resto de pie")
Ver solución
Lq ≈ 1.0: dos sillas alcanzan en media; el pico máximo pide colchón de pie señalizado.
Ejercicio 3: agilizar vs contratar
S=2→1.5 con c=3, λ=1.4. ¿Wq? Compará con c=4.
Ver una posible respuesta
# S=1.5: rho=0.7, Wq≈2-3 (cumple); c=4: 0.7 (sobra). Proceso antes que puesto
print("Agilizar rinde primero; el puesto es el plan B")
Agilizar cumple sin contratar: el proceso (S) se ataca antes que la plantilla (c).
09 · Síntesis
Ideas para recordar
- Calle → ventanas (λ, S) → Kendall/clases → c por turno.
- Pico manda; media esconde; abandono se mide con λef.
- Fila única + caja rápida; especializar solo lo que el SLA exige.
- En Python: tabla por ventana + Little para sillas.
- Espera informada: intervención barata a igual Wq.
En el próximo tema cruzamos al data center: servidores y redes.