01 · Punto de partida
Una caja explica todas las cajas
Una sucursal con una sola caja, una impresora compartida, un peaje con una cabina: todos son el mismo sistema con c = 1. Tiene el estado más simple posible —libre u ocupado más la fila— y aun así produce toda la fenomenología: espera contenida con ρ = 0.5, tensión con ρ = 0.85 y avalancha con ρ > 1.
Por eso el sistema de un servidor es el caso base: tiene fórmulas exactas (M/M/1), se simula en 20 líneas y anticipa la pregunta que decide todo dimensionamiento: ¿alcanza con uno o pido el segundo?
- ¿Cuándo alcanza un servidor y cuándo la curva se dispara?
- ¿Cómo paso de (λ, μ) a ρ, L, Wq sin simular?
- ¿Cómo valido mi simulador c=1 contra la fórmula?
- ¿Qué cambia al agregar el segundo servidor?
02 · Definición
Estado binario, fórmulas cerradas
Estado
Servidor libre/ocupado + N en sistema. Sin reparto entre servidores: toda la lógica es “¿libre?”.
Utilización
ρ = λ/μ = fracción ocupada. También es P(servidor ocupado) en régimen. Puerta de la estabilidad.
Referencia
Poisson + exponencial + 1 servidor: L, Lq, W, Wq exactos. El “Hola mundo” contra el que se valida todo.
| Modelo | Servicio | Wq con ρ=0.5 | Lectura |
|---|---|---|---|
| M/D/1 | Fijo S = 1/μ | La mitad que M/M/1 | Piso: sin variabilidad no se puede esperar menos |
| M/M/1 | Exp(μ) | Referencia: ρ/(μ−λ) | Defecto sin datos: Cs² = 1 |
| M/G/1 | Cualquiera (PK) | Wq = λE[S²]/(2(1−ρ)) | Con gigantes, muy por encima de M/M/1 |
03 · El corazón: la curva que explota
ρ manda con forma de hipérbola
Duplicar la carga de ρ = 0.4 a 0.8 no duplica la espera: la multiplica por 4. De ρ = 0.8 a 0.95 la multiplica por 4 otra vez. Esa es la hipérbola 1/(1−ρ): plana al inicio, pared al final. La regla práctica del dimensionador nace de ahí: ρ < 0.7 ágil, 0.7–0.85 tenso, > 0.85 cola permanente.
- 1Estimar λ y μ.
λ de arribos, μ = 1/E[S] de atenciones. Mismas unidades o ρ miente.
- 2Calcular ρ.
ρ = λ/μ. Si ≥ 1, no hay fórmula que valga: avalancha (o cupo con fuga, Tema 27).
- 3Predecir con M/M/1.
L, Wq y W en un renglón. Es tu hipótesis antes de simular.
- 4Validar simulando.
Corre Poisson + Exp con c=1 y compará: si difiere >10% en régimen, el bug está en tu código.
- Pollaczek-Khinchine (M/G/1)
- Wq = λE[S²]/(2(1−ρ)): la espera crece con el segundo momento. A igual media, gigantes ⇒ Wq mayor.
- M/D/1 (piso)
- Wq = ρ/(2μ(1−ρ)): la mitad que M/M/1. Si tu simulador da menos que esto, mediste mal.
- Tiempo residual
- El que llega con servidor ocupado espera lo que le queda al que está en curso, no un S entero: por eso E[S²] aparece.
- Regla 0.7 / 0.85
- Heurística de diseño: bajo 0.7 la espera es ruido; sobre 0.85 cada décima de λ se paga en minutos de Wq.
ρ baja (< 0.7)
Ágil
La mayoría encuentra servidor libre. Wq es fracción de S. Un servidor sobra y el segundo sería lujo.
ρ alta (> 0.85)
Pared
Casi todos esperan y cada arribo suma. La única salida es bajar λ, subir μ o sumar c (Tema 29).
04 · Ejemplos
Tres unos que ves cada día
- 1Caja única: λ=20/h, S=2 min.
μ = 30/h, ρ ≈ 0.67. M/M/1 predice Wq ≈ 4 min, W ≈ 6. Tenso pero viable.
- 2Impresora: λ=10/h, S=3 min.
μ = 20/h, ρ = 0.5. Wq ≈ 3 min: la mitad encuentra libre, nadie protesta.
- 3Peaje 1 cabina en pico: λ=60/h, S=1 min.
μ = 60/h, ρ = 1.0: la fila no se estabiliza; o abre otra cabina o la cola llega a la ruta.
05 · Representación en Python
Del (λ, μ) a la predicción en tres líneas
La fórmula es tu hipótesis; la simulación de 20 líneas es tu experimento. Ambas con c = 1, FIFO, sin cupo.
Python en tu navegador. El primero predice M/M/1; el segundo simula Poisson + Exp y compara. Cambiá λ y acercate a la pared.
# M/M/1 con un servidor: λ=0.25/min, S medio 2 (μ=0.5)
lam, mu = 0.25, 0.5
rho = lam / mu
L = rho / (1 - rho)
Wq = lam / (mu * (mu - lam))
print(f"ρ={rho:.2f} L={L:.2f} Wq={Wq:.1f} W={Wq + 1/mu:.1f}")
# Simular c=1 FIFO (Poisson + Exp) y comparar Wq
import random
random.seed(28)
lam, mu, T = 0.25, 0.5, 200.0
t, libre, wqs = 0.0, 0.0, []
while t < T:
t += random.expovariate(lam)
ini = max(t, libre)
libre = ini + random.expovariate(mu)
wqs.append(ini - t)
print(f"Wq sim={sum(wqs)/len(wqs):.2f} vs teoría {lam/(mu*(mu-lam)):.2f} (N={len(wqs)})")
06 · Exploración
Laboratorio: acercarse a la pared
Simulamos c = 1 con arribos Poisson y servicios exponenciales hasta T = 60 (semilla = réplica). La escalera es N(t); la línea punteada es L teórica. Subí λ con S fijo y mirá cómo la escalera se despega del piso: en ρ = 0.5 ronda L = 1, en ρ = 0.9 trepa a L = 9.
c = 1: simulación contra M/M/1
ρ = λS · Wq = λS²/(1−ρ) (Exp)
Acercate a ρ = 1 para ver la pared.
Escalera lima = N(t) simulada; punteada blanca = L = ρ/(1−ρ). Con ρ ≥ 1 no hay L teórica: la escalera no vuelve.
Preguntas para explorar
- Con λ=0.25, S=2 (ρ=0.5), ¿Wq sim ≈ 2? Cambiá de réplica: ¿cuánto varía?
- Subí λ a 0.45 (ρ=0.9): ¿Wq teórica? ¿La sim la alcanza en T=60 o queda corta?
- Con λ=0.5, S=2 (ρ=1.0): ¿qué hace N(t)? ¿Por qué no hay teoría que la ate?
Ver respuestas sugeridas
- Sí (~1.5–2.5 según réplica): con ρ media la varianza entre réplicas es moderada y T=60 alcanza.
- Teórica 18 (9× la de ρ=0.5). La sim suele quedar corta en T=60: con ρ alta el régimen tarda y la varianza es enorme.
- Crece sin volver (avalancha): sin régimen no hay L ni Wq de equilibrio que predecir.
07 · Comprensión
Confusiones frecuentes
«ρ = 0.95 es eficiente»
Es cola segura: L ≈ 19 en M/M/1. Eficiencia sin espera solo existe con variabilidad cero (D), no con azar.
«Si simulo 12 pasos y no coincide, la fórmula falla»
Con T corto medís transitorio + ruido. La comparación exige T largo, warmup y ρ < 0.9 (Temas 41–43).
«M/M/1 vale para cualquier servicio»
Solo Exp. Con S fijo usá M/D/1 (mitad de Wq); con mezcla usá M/G/1 (PK): misma ρ, muy distinta espera.
«Agrego 10% de λ y la espera sube 10%»
Cerca de la pared sube mucho más: de ρ=0.8 a 0.88 (+10% λ) Wq pasa de 4S a ~7S. La hipérbola no perdona.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: predecir el caso base
λ=20/h, S=2 min, c=1. ¿ρ, L y Wq M/M/1?
lam, S = 20/60, 2.0 # por minuto
mu, rho = 1/S, lam*S
print(f"ρ={rho:.2f} L={rho/(1-rho):.2f} Wq={lam/(mu*(mu-lam)):.1f} min")
Ver solución razonada
ρ ≈ 0.67, L ≈ 2.0, Wq ≈ 4.0 min. Tenso pero viable: dos de cada tres encuentran ocupado.
Ejercicio 2: la pared en números
Con μ=0.5/min, compará Wq con λ=0.25 y λ=0.45.
mu = 0.5
for lam in [0.25, 0.45]:
print(f"λ={lam} ρ={lam/mu:.2f} Wq={lam/(mu*(mu-lam)):.1f}")
Ver solución
2.0 vs 18.0: +80% de carga ⇒ ×9 espera. Esa es la pared que el laboratorio muestra.
Ejercicio 3: ¿pido el segundo?
λ=0.45, S=2 (ρ=0.9 con c=1). ¿ρ con c=2? (Anticipa el Tema 29.)
Ver una posible respuesta
lam, S, c = 0.45, 2.0, 2
print(f"ρ={lam*S/c:.2f}") # 0.45: vuelve lo ágil
ρ cae a 0.45: el segundo servidor no duplica, rescata. El Tema 29 mide cuánto.
09 · Síntesis
Ideas para recordar
- c = 1: estado 0/1 + fila; ρ = λ/μ decide estabilidad.
- M/M/1: L = ρ/(1−ρ), Wq = λ/(μ(μ−λ)); la espera es hipérbola en ρ.
- M/D/1 es el piso (mitad), M/G/1 (PK) castiga gigantes.
- En Python: fórmula como hipótesis, Poisson + Exp como experimento.
- ρ < 0.7 ágil, > 0.85 pared: ahí se pide el segundo servidor.
En el próximo tema sumaremos capacidad en paralelo: los sistemas con múltiples servidores.