01 · Punto de partida
Del modelo validado a la decisión
En el Tema 38 dejamos el modelo comparado con la realidad: sabemos dónde responde. Ahora lo usamos para lo que fue construido: preguntar por futuros que aún no pasaron. ¿Qué pasa si la demanda crece 30%? ¿Y si abrimos otra caja? ¿Y si ambas cosas a la vez?
Analizar escenarios es correr esos futuros con el mismo modelo, las mismas métricas y las mismas réplicas, para comparar decisiones en igualdad de condiciones. No adivina el futuro: ordena las opciones ante futuros posibles.
- ¿Cuál es el escenario base contra el que se compara todo?
- ¿Qué cambia en cada variante y qué queda fijo?
- ¿La ventaja sobrevive al ruido de las réplicas?
- ¿Qué escenario rompe el sistema y dónde está el límite?
02 · Vocabulario mínimo
Base, variante y supuesto
Base
El presente calibrado: condiciones actuales con las que todo se compara.
Variante
Un futuro posible: base más un cambio declarado (más demanda, más capacidad).
Supuesto
Lo que se declara fijo para comparar: mismas réplicas, mismo horizonte, misma métrica.
| Escenario | Qué cambia | Qué pregunta responde |
|---|---|---|
| Base | Nada: presente calibrado | ¿De dónde partimos? |
| Pico | Demanda +30% | ¿Aguanta la hora pico? |
| Refuerzo | Pico + 1 cajero | ¿Alcanza con abrir otra caja? |
| Ruptura | Demanda que quiebra el sistema | ¿Dónde está el límite? |
03 · Tres reglas
Cómo comparar sin autoengañarse
- 1Anclar a la base.
Toda variante se mide contra la base con las mismas semillas: la diferencia es del escenario, no del azar.
- 2Cambiar poco a la vez.
Una diferencia por variante al principio; las combinaciones después, como factorial del Tema 32.
- 3Declarar supuestos.
Lo que queda fijo se escribe: horizonte, warm-up, réplicas. Sin eso, los escenarios no son comparables.
Pronóstico
Un futuro anunciado
«La espera será 6,8». Finge certeza donde hay azar y supuestos: se equivoca con confianza.
Escenarios
Varios futuros comparados
«En pico llega a 11; con refuerzo baja a 5». Muestra el abanico y qué decisión lo achica.
- Escenario
- Futuro posible con cambios y supuestos declarados.
- Base
- Escenario de referencia: el presente calibrado.
- Variante
- Base más un cambio explícito de condiciones.
- Ruptura
- Escenario donde el sistema deja de responder aceptablemente.
04 · Protocolo
El abanico en cinco pasos
Se fija la base, se declaran pocas variantes, se corren todas con las mismas semillas y métricas, se comparan contra la base y se cuenta la historia para decidir. El Tema 40 preguntará qué parámetro mueve cada resultado.
05 · En Python
Escenarios como datos
Cada escenario es un diccionario con los mismos campos: solo cambian los valores declarados. El modelo no se toca, solo se alimenta distinto.
Python en tu navegador. Escenarios en lista, corridas con las mismas semillas.
escenarios = [
{"nombre": "base", "demanda": 5, "cajeros": 1},
{"nombre": "pico", "demanda": 8, "cajeros": 1},
{"nombre": "refuerzo", "demanda": 8, "cajeros": 2},
]
for e in escenarios:
print(e["nombre"], "demanda:", e["demanda"], "cajeros:", e["cajeros"])
Correr todos con la misma vara
La misma función, las mismas réplicas por escenario: la diferencia que aparezca es del escenario.
import random
def espera(demanda, cajeros, semilla):
rng = random.Random(semilla)
ruido = rng.choice([-1, 0, 1])
return max(0, 2 + 1.2 * (demanda - 2.5 * cajeros) + ruido)
for e in escenarios:
medias = [espera(e["demanda"], e["cajeros"], 7000 + r) for r in range(5)]
print(e["nombre"], round(sum(medias) / len(medias), 2))
06 · Exploración
Laboratorio: pico y refuerzo
Partís de tu base (demanda y cajeros a elección). El laboratorio construye dos variantes: pico (+3 de demanda) y refuerzo (pico + 1 cajero). ¿El pico rompe el sistema? ¿El refuerzo lo salva?
Tres futuros
base · pico · refuerzo
Con base 5 y 1 cajero, el pico duele y el refuerzo lo compensa.
Tres barras: espera media de 20 réplicas por escenario, con las mismas semillas. Línea: umbral de ruptura en 8.
Preguntas para explorar
- Con base 5 y 1 cajero, ¿el pico supera el umbral de 8? ¿El refuerzo lo devuelve abajo?
- Subí la base a 7. ¿El refuerzo sigue alcanzando o el sistema pide más que un cajero?
- ¿Por qué los tres escenarios usan las mismas 20 semillas? ¿Qué pasaría con semillas distintas?
Ver respuestas sugeridas
- Sí: el pico trepa cerca de 9 y el refuerzo lo baja a ~5. El abanico justifica abrir la caja en pico.
- No siempre: con base alta, pico + refuerzo siguen arriba del umbral. Ahí aparece la ruptura y hay que rediseñar.
- Porque acopla el azar: la diferencia es del escenario, no de la suerte. Con semillas distintas harían falta más réplicas para la misma certeza.
07 · Comprensión
Confusiones frecuentes
«El escenario es un pronóstico»
No: es un futuro posible con supuestos. El análisis ordena opciones, no adivina cuál ocurrirá.
«Más escenarios siempre es mejor»
El abanico útil es chico y legible: base más 2–3 variantes. Veinte escenarios sin base clara son ruido.
«Cada escenario con sus semillas»
Al revés: mismas semillas para todos, para que el azar no disfrace el efecto del escenario.
«El que gana en media gana siempre»
Solo si la ventaja supera al error (Tema 34) y vale en el rango validado (Tema 36). Si no, es empate técnico.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: declarar la familia
Escribí base, pico y refuerzo como lista de diccionarios con los mismos campos.
escenarios = [
{"nombre": "base", "demanda": 5, "cajeros": 1},
{"nombre": "pico", "demanda": 8, "cajeros": 1},
{"nombre": "refuerzo", "demanda": 8, "cajeros": 2},
]
print(len(escenarios), "escenarios")
Ver solución razonada
Hay 3 escenarios con idéntica estructura: lo único que cambia son los valores declarados.
Ejercicio 2: correr con la misma vara
Corré los 3 escenarios con las mismas 5 semillas y compará medias.
import random
def espera(demanda, cajeros, semilla):
rng = random.Random(semilla)
return max(0, 2 + 1.2 * (demanda - 2.5 * cajeros) + rng.choice([-1, 0, 1]))
for e in escenarios:
ms = [espera(e["demanda"], e["cajeros"], 7000 + r) for r in range(5)]
print(e["nombre"], round(sum(ms) / len(ms), 2))
Ver solución
La base ronda 5, el pico 8,6 y el refuerzo 5,6: el pico duele y el refuerzo casi lo anula.
Ejercicio 3: buscar la ruptura
Bar ré la demanda con 1 cajero y encontrá dónde la espera cruza el umbral 8.
Ver una posible respuesta
def espera_media(demanda, cajeros=1):
ms = [espera(demanda, cajeros, 7000 + r) for r in range(5)]
return sum(ms) / len(ms)
for d in [5, 6, 7, 8, 9]:
print(d, round(espera_media(d), 2))
El cruce aparece entre demanda 7 y 8: ahí está la ruptura con 1 cajero y el argumento para el refuerzo.
09 · Síntesis
Ideas para recordar
- Escenarios son futuros posibles con supuestos escritos, no pronósticos.
- Todo se mide contra la misma base, con la misma vara.
- Mismas semillas en todos: el azar acoplado compara con menos réplicas.
- Familia chica y legible: base, pico, refuerzo y ruptura.
- En Python: escenarios como dicts y una sola función de corrida para todos.
En el próximo tema preguntaremos qué mueve cada resultado: el análisis de sensibilidad.