Simulación de Eventos Discretos · Tema 42

Estado transitorio

Comportamiento inicial antes de estabilizarse — nacer, llenarse, oscilar y recién aplanar.

01 · Punto de partida

El régimen se hace esperar

Abrís vacío con ρ = 0.8: a los 10 min la media va en 2, a los 50 en 3.5, a los 120 en 4. Ninguna de las tres es “error”: es el transitorio, la subida desde el estado inicial hacia el régimen. Con ρ = 0.5 dura 20 min; con ρ = 0.9, más de 100.

Estudiarlo sirve dos veces: para descartarlo bien (Tema 41) y para diseñar aperturas, picos y cortes, donde el sistema vive en transitorio y el régimen nunca llega.

  • ¿Cuánto dura el transitorio y de qué depende?
  • ¿Cómo se ve: réplicas, media y teoría juntas?
  • ¿Vacío, lleno o heredado: qué cambia el arranque?
  • ¿Cuándo el transitorio ES el problema (no el descarte)?

02 · Definición

Inicial, evolución y límite

N₀

Estado inicial

Dónde nace: vacío (0), lleno (8) o heredado del turno anterior. Fija el signo del sesgo.

↗

Evolución

Pn(t) y L(t) dependen de t (Chapman-Kolmogorov). Vacío sube, lleno baja hacia L.

≈

Régimen

El límite: Pn, L, Wq del Tema 31–33. Solo existe con ρ < 1.

M/M/1 con S = 2: a más ρ, más W y más transitorio.
ρWTransitorio ≈Lectura
0.50420–40Se estabiliza en un rato
0.801050–100Pide T de cientos
0.9020100–200El arranque manda media corrida

03 · El corazón: réplicas que se abrazan

La media converge, el ruido queda

nace en N₀→R réplicas→media → L

Una sola corrida sube y baja sin decir cuándo “llegó”. Ocho réplicas grises con su media teal sí: la media sube suave hacia L = 4 (arranque vacío) o baja hacia 4 (arranque lleno). El método de Welch es exactamente ese gráfico.

  1. 1
    Fijar N0 y ρ.

    Vacío (0), lleno (8) o heredado. ρ alta alarga todo.

  2. 2
    Correr R réplicas.

    Mismo N0, semillas distintas, horizonte común T.

  3. 3
    Promediar por instante.

    Media de N(t) entre réplicas en grilla fina: la curva teal del laboratorio.

  4. 4
    Leer duración.

    Instante donde la media entra en la banda de L y no sale: ese es tu t0 (Tema 41).

Chapman-Kolmogorov
Ecuaciones exactas de Pn(t): balance con derivada. Resolubles en casos chicos; en general se simulan.
Relajación τ
Tiempo característico ≈ W/(1−ρ) en orden: con ρ→1 diverge. Regla práctica 5–10×W del Tema 41.
Dependencia inicial
Vacío sube, lleno baja, heredado continúa. El signo del sesgo delata el arranque.
Ergodicidad
La media temporal de una corrida larga iguala a la poblacional: por eso el warmup + T largo funciona.

Transitorio

¿Cuánto tarda?

Pregunta de aperturas, picos y cortes: horizonte corto, estado inicial manda, se estudia con réplicas.

Estacionario

¿A cuánto tiende?

Pregunta de diseño (Tema 43): horizonte largo, Erlang manda, el arranque se descarta.

04 · Ejemplos

Cuatro transitorios con nombre

  1. 1
    Apertura del banco.

    N0 = 0, ρ = 0.8: la primera hora sube de 0 a 4. Medirla es medir la largada.

  2. 2
    Pico del mediodía.

    λ salta de 0.2 a 0.45: nuevo transitorio hacia L = 9 que no llega antes de que baje.

  3. 3
    Corte que vacía.

    Tras la caída, N0 = 0 con backlog afuera: avalancha de reintentos (transitorio con ρ > 1).

  4. 4
    Cambio de turno heredado.

    N0 = 6 con ρ = 0.5: baja de 6 a 1. Sin warmup sobrestima.

05 · Representación en Python

Réplicas y media por instante

El transitorio se ve promediando historias, no alargando una: R réplicas con grilla común.

Python en tu navegador. El primero corre una réplica con N0; el segundo promedia R en grilla (Welch casero). Cambiá N0.

# Una réplica M/M/1 con N0 inicial: L temprana [0,30] vs tardía [120,150]
import random
def replica_L(lam, mu, T, N0=0, semilla=9):
    rng = random.Random(semilla)
    inits = [rng.expovariate(mu) for _ in range(N0)]
    evs = []
    acc = 0.0
    for s in inits:  # salidas del lote inicial (FIFO encadenado)
        acc += s
        evs.append((acc, -1))
    libre = acc
    t = 0.0
    while True:
        t += rng.expovariate(lam)
        if t > T:
            break
        ini = max(t, libre)
        fin = ini + rng.expovariate(mu)
        libre = fin
        evs.append((t, 1))
        evs.append((fin, -1))
    evs.sort()
    def L_en(a, b):
        n = N0
        for te, d in evs:
            if te <= a:
                n += d
        prev, area = a, 0.0
        for te, d in evs:
            if te <= a:
                continue
            if te > b:
                break
            area += n * (te - prev)
            n += d
            prev = te
        area += n * (b - prev)
        return area / (b - a)
    return {"temprana": round(L_en(0, 30), 2), "tardia": round(L_en(120, 150), 2)}

print("N0=0:", replica_L(0.4, 0.5, 150, N0=0))
print("N0=8:", replica_L(0.4, 0.5, 150, N0=8))
# Media entre réplicas en un instante (Welch): a más R, menos ruido
import random
def media_en(t, lam, mu, R=8):
    vals = []
    for r in range(R):
        rng = random.Random(1000+r)
        vals.append(rng.expovariate(lam) + rng.expovariate(mu))
    return sum(vals)/len(vals)

print(f"media de {8} muestras: {media_en(0, 0.4, 0.5):.2f}")

06 · Exploración

Laboratorio: ocho historias, una media

Ocho réplicas M/M/1 (S = 2, T = 300) nacen en tu N0 y comparten λ. Las grises son historias; la teal es su media por instante; la punteada, L teórica. Con N0 = 0 la media sube; con 8, baja: ambas abrazan L. Con ρ = 0.9 el abrazo tarda.

EXPERIMENTO 42

El abrazo hacia el régimen

8 réplicas · media → L · S=2

Los resultados numéricos aparecen debajo.
Media temprana [0,30]0
Media tardía [270,300]0
L teórica0
Arranque N₀0

Cambiá N₀ para ver el abrazo desde arriba.

Grises = réplicas; teal = media por instante; punteada = L. Temprana delata el arranque, tardía abraza la teoría.

Preguntas para explorar

  1. Con ρ=0.8, N0=0: ¿temprana vs tardía vs 4?
  2. Con N0=8: ¿temprana vs tardía? ¿Qué cambió de signo?
  3. Con ρ=0.9 y N0=0: ¿la media a t=300 ya abrazó? ¿Y una réplica sola?
Ver respuestas sugeridas
  1. Temprana ~1.7 (sube), tardía ~4.5 (abraza L = 4).
  2. Temprana ~7.7 (baja), tardía ~4.8 igual: el arranque se olvida, el régimen queda.
  3. La media llega a ~6.7 vs L = 9 (a medio abrazar); las réplicas sueltas ni se enteran: con ρ alta todo tarda.

07 · Comprensión

Confusiones frecuentes

«Transitorio es error de simulación»

Es física del arranque, no bug: el sistema real también se llena desde vacío. Se descarta o se diseña, no se “corrige”.

«Con una corrida larga veo la convergencia»

Ves ruido + media acumulada, no Pn(t). La convergencia se ve entre réplicas (Welch) o en acumuladas muy largas.

«Dura siempre lo mismo»

Dura ≈ 5–10×W: con ρ = 0.5 son 20, con 0.9 son 200. Fijar t0 = 20 para todo es ceguera.

«En régimen N deja de oscilar»

Sigue oscilando (¡es estocástico!): lo que aplana es la media. Régimen ≠ quietud.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: leer el abrazo

Media temprana 2.3, tardía 4.1, L = 4.0, N0=0. ¿Hay transitorio? ¿t0?

# temprana lejos (-42%), tardía encima (+2%): transitorio de ~30-50
print("t0 ≈ 30: la tardía ya abraza")
Ver solución razonada

Sí: la temprana delata arranque vacío; la tardía valida. t0 ≈ 30 (donde la media entra en banda).

Ejercicio 2: signo del arranque

N0=8, temprana 6.5, tardía 4.0. ¿Qué arranque fue? ¿Sesgo sin warmup?

print(f"lleno que baja: sin warmup sobrestima +{(6.5-4.0)/4.0:.0%}")  # +62%
Ver solución

Lleno que baja: sin corte sobrestima ~60%. Mismo remedio, signo opuesto al vacío.

Ejercicio 3: regla de duración

M/M/1 con W = 20 (ρ=0.9, S=2). ¿Transitorio y t0 sugerido?

Ver una posible respuesta
W = 20.0
print(f"transitorio {5*W:.0f}-{10*W:.0f}, t0 ≈ {5*W:.0f}+")

100–200, t0 ≈ 100+: con ρ = 0.9 el arranque manda media corrida corta.

09 · Síntesis

Ideas para recordar

  • Transitorio = camino de N0 al régimen; dura ≈ 5–10×W.
  • Se ve con R réplicas + media por instante (Welch), no con una.
  • Vacío sube, lleno baja; el signo delata el arranque.
  • Su duración fija t0 (Tema 41); su estudio diseña aperturas y picos.
  • En régimen oscila igual: aplana la media, no la historia.

En el próximo tema nos quedamos en el destino: el estado estacionario.