01 · Punto de partida
Hay problemas sin tiempo
¿Cuántos diarios comprar hoy si la demanda es incierta? ¿Qué precio poner si el costo varía? No hay evolución ni colas: hay una decisión, un azar y un resultado. Repetir esa foto miles de veces es la simulación estática.
Es el hábitat natural de Monte Carlo: réplicas independientes, sin eventos ni reloj, donde el orden no importa y todo se puede paralelizar.
- ¿El tiempo cambia el problema o solo hay un periodo?
- ¿Cada réplica depende de la anterior?
- ¿Basta promediar fotos para decidir?
- ¿Qué gano si agrego dinámica?
02 · Definición
Estática frente a dinámica
Estática
Una foto por réplica: demanda de hoy, tirada de hoy. Sin memoria entre réplicas. Ejemplo: vendedor de diarios.
Dinámica
Una película: el stock de mañana depende del de hoy. Hay reloj, eventos y estado. Ejemplo: cola con llegadas.
Regla de oro
Si el orden no cambia el promedio, usá estática: es más simple, rápida y paralelizable.
| Problema | Tipo | Por qué |
|---|---|---|
| Diarios de hoy | Estática | Un periodo, sin arrastre al día siguiente |
| Área / integral / π | Estática | Puntos independientes, sin tiempo |
| Cartera con riesgo | Estática | Escenarios del mismo horizonte que se promedian |
| Cola de banco | Dinámica | La espera de ahora depende de los que llegaron antes |
| Inventario con reposición | Dinámica | El stock evoluciona periodo a periodo |
03 · Estructura
Anatomía de una simulación estática
- 1Entradas aleatorias.
Demanda, precio, falla: cada una con su F. Se sortean frescas en cada réplica.
- 2Modelo instantáneo.
Una función sin tiempo:
ganancia(Q, D),dentro(x,y),f(x). - 3Salidas por réplica.
Un número por escenario: ganancia, acierto, valor. Se acumulan.
- 4Promedio y error.
Media, desvío y ± σ/√N. Sin warm-up ni transitorios que descartar.
Ventajas
Simple y paralela
Sin reloj, sin estado, sin orden: podés repartir réplicas en núcleos y el código cabe en una función.
Límites
No sirve si hay memoria
Si el hoy depende del ayer (colas, stocks encadenados), la foto miente: necesitás simulación dinámica.
- Réplica
- Una foto completa: un sorteo de cada entrada evaluado por el modelo. N réplicas = N fotos.
- Política
- La decisión a evaluar: comprar Q diarios, fijar precio p. Se simula una política por vez y se comparan promedios.
- Sin transitorio
- En dinámica hay que descartar el arranque; en estática no: la réplica 1 vale igual que la 10 000.
04 · Ejemplos
Cuatro estáticas típicas
- 1Vendedor de diarios.
Q fijo, demanda D aleatoria: ganancia = 5·min(Q,D) − 2·Q. Se busca el Q con mayor promedio.
- 2π por puntos.
Punto (x,y) uniforme: dentro = x²+y² ≤ 1. π ≈ 4·dentro/N. Fotos puras.
- 3Proyecto con costo incierto.
Costo ~ Normal(100, 15): ¿P(costo > 120)? Se cuenta cuántas réplicas superan el umbral.
- 4Garantía.
Falla con p = 0,05: costo = 200 si falla. Costo medio ≈ 10. Una Bernoulli por réplica.
05 · Representación en Python
El vendedor de diarios en 10 líneas
El modelo estático es una función pura: recibe Q y D, devuelve ganancia. La simulación la llama N veces.
Python en tu navegador. Cambiá Q y la distribución de D y mirá qué política gana.
import random
def ganancia(Q, D, precio=5, costo=2):
return precio * min(Q, D) - costo * Q
def simular(Q, N):
total = 0
for _ in range(N):
D = random.choices([80, 100, 120], weights=[30, 40, 30])[0]
total += ganancia(Q, D)
return total / N
for Q in [80, 100, 120]:
print(Q, simular(Q, 10000))
Consejo: el mejor Q no es el de mayor demanda, sino el que equilibra sobrante y faltante.
06 · Exploración
Laboratorio: ¿cuántos diarios compro?
Mové el stock Q y las réplicas N. El histograma muestra la ganancia de cada escenario; la línea amarilla es el promedio. Buscá el Q más alto.
Vendedor de diarios
ganancia = 5·min(Q,D) − 2·Q
Tocá «Simular» para evaluar el stock Q.
Cada barra es un rango de ganancia. Si Q es chico, perdés ventas; si es grande, pagás sobrantes. El promedio dice cuál conviene.
Preguntas para explorar
- Probá Q = 80, 100 y 120 con N = 10 000. ¿Cuál da mayor media?
- Con Q = 140, ¿por qué la media cae aunque a veces ganes mucho?
- ¿Por qué este problema no necesita reloj ni memoria entre réplicas?
Ver respuestas sugeridas
- Q = 100 suele ganar: equilibra faltantes y sobrantes para esta demanda (80/100/120).
- Comprás de más casi siempre: el costo del sobrante supera las pocas veces que vendés todo.
- Cada día es independiente: la demanda de hoy no depende de la de ayer en este modelo. Es una foto, no una película.
07 · Comprensión
Confusiones frecuentes
«Estática es lo mismo que determinista»
No: estática habla del tiempo (sin reloj); estocástica habla del azar. Monte Carlo es estática y estocástica.
«Si hay varias variables ya es dinámica»
No: podés tener 10 incertidumbres en una foto. Dinámica es cuando hay dependencia temporal entre réplicas.
«El orden de las réplicas importa»
En estática no: podés mezclarlas, paralelizarlas o repetirlas y el promedio es el mismo.
«Todo se puede volver estático»
Solo si podés cortar la memoria. Colas e inventarios encadenados pierden lo esencial si los congelás.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: comparar tres Q
Evaluá Q = 80, 100 y 120 con N = 20 000 y quedate con el mejor promedio.
import random
def simular(Q, N):
total = 0
for _ in range(N):
D = random.choices([80, 100, 120], weights=[30, 40, 30])[0]
total += 5 * min(Q, D) - 2 * Q
return total / N
for Q in [80, 100, 120]:
print(Q, simular(Q, 20000))
Ver solución razonada
Q = 100 gana (~290) frente a 80 (~240) y 120 (~270). Comprar poco pierde ventas; comprar mucho paga sobrante.
Ejercicio 2: probabilidad de pérdida
Con Q = 100, estimá P(ganancia < 0). Debería ser 0 con esta demanda, ¿por qué?
import random
Q, N = 100, 10000
perdidas = 0
for _ in range(N):
D = random.choices([80, 100, 120], weights=[30, 40, 30])[0]
g = 5 * min(Q, D) - 2 * Q
if g < 0:
perdidas += 1
print(perdidas / N)
Ver solución
Da 0: aun con D = 80, la ganancia es 5·80 − 200 = 200 > 0. El riesgo aparece si el costo sube o la demanda puede ser 0.
Ejercicio 3: hacerlo función
Generalizá a evaluar(Q, valores, pesos, N) que devuelva (media, p_perdida).
Ver una posible respuesta
import random
def evaluar(Q, valores, pesos, N, precio=5, costo=2):
tot, perd = 0, 0
for _ in range(N):
D = random.choices(valores, weights=pesos)[0]
g = precio * min(Q, D) - costo * Q
tot += g
if g < 0:
perd += 1
return tot / N, perd / N
print(evaluar(100, [80, 100, 120], [30, 40, 30], 10000))
Esta función será tu plantilla para riesgo, inventarios y finanzas en temas próximos.
09 · Síntesis
Ideas para recordar
- Estática = sin tiempo: N fotos independientes que se promedian.
- Es el marco ideal de Monte Carlo: simple, sin transitorio y paralelizable.
- El modelo es una función pura: entradas sorteadas → un número por réplica.
- Se elige la política (Q, precio) comparando promedios, no casos sueltos.
- Si hay memoria temporal, la foto no alcanza: toca dinámica.
En el próximo tema veremos el modelo conceptual de Monte Carlo: cómo ordenar entradas, modelo y salidas antes de programar.