01 · Punto de partida
Todo modelo tiene bordes
Un modelo sin entradas es una pecera: solo repite lo que ya sabe. Un modelo sin salidas definidas es un ruido: calcula sin responder nada. Las entradas conectan el modelo con el escenario y las salidas con la decisión.
- ¿Qué datos necesita el modelo para correr?
- ¿Qué respuestas debe entregar y en qué formato?
- ¿Qué queda fuera de la frontera y quién lo provee?
- ¿Cada salida responde a algún objetivo?
02 · Definiciones
Estímulos, respuestas y frontera
Entradas
Lo que llega de afuera en cada paso o escenario: llegadas, pedidos, caudales, precios.
Salidas
Lo que el modelo entrega: historias de estado y métricas resumidas para decidir.
Frontera
La línea del contrato: qué provee el usuario, qué calcula el modelo y qué se ignora.
| Modelo | Entradas | Salidas |
|---|---|---|
| Tanque | caudal de entrada por paso | historia del nivel, nivel final |
| Cola | llegadas por paso | espera media, cola máxima |
| Ganancia | demanda, márgenes | ganancia por opción, decisión |
| Inventario | ventas por día | quiebres, costo de stock |
03 · La frontera como contrato
Diseñar la interfaz antes del interior
- 1Listá las entradas con unidades.
«llegadas por paso (clientes)», no «dato de entrada». Sin unidades no hay contrato.
- 2Listá las salidas con formato.
«historia (lista) y métricas (dict)», no «resultados». Quien usa el modelo debe saber qué recibe.
- 3Separá entradas de parámetros.
La entrada varía paso a paso; el parámetro fija el escenario (Tema 7). La firma lo muestra.
- 4Declará lo que queda fuera.
Lo no modelado va a supuestos: «sin fallas de máquina», «demanda conocida».
Entradas
Varían en el tiempo
Una serie por paso: la lluvia de cada día, las llegadas de cada minuto. Alimentan la transición.
Parámetros
Fijan el escenario
Un valor por corrida: la capacidad, el margen. Configuran cómo se procesan las entradas.
04 · Salidas y métricas
Del historial a la decisión
La salida cruda es la historia (nivel paso a paso). La métrica la resume para el objetivo: final, promedio, mínimo, máximo, proporción de quiebres. Cada métrica debe responder a un objetivo del Tema 5; la salida sin lector es cálculo perdido.
- Historia
- Serie completa de estados: lo que se grafica y se archiva.
- Métrica
- Resumen comparable: final, media, pico, costo total.
- Formato
- Contrato de salida: lista para historias, dict para métricas.
- Trazabilidad
- Cada métrica debe poder rastrearse a entradas y supuestos.
05 · En Python
Entradas como serie, salidas como historia y métrica
Python en tu navegador. La función recibe una lista de entradas y devuelve historia y métricas: la frontera hecha código.
def simular_con_entradas(nivel_inicial, entradas, salida):
# Entradas: serie por paso. Salida cruda: historia de niveles.
n = nivel_inicial
historia = []
for e in entradas:
n = max(n + e - salida, 0)
historia.append(n)
return historia
print(simular_con_entradas(10, [3, 3, 0, 0, 3, 3], 2))
Resumir para decidir
def metricas(historia):
return {
"final": historia[-1],
"promedio": round(sum(historia) / len(historia), 2),
"minimo": min(historia),
}
h = [11, 12, 10, 8, 9, 10]
print(metricas(h))
06 · Exploración
Laboratorio: entradas que suben y bajan
La entrada de cada paso oscila (base ± amplitud). La curva turquesa son las entradas; la lima, el nivel que responde. Cambiá la base y la amplitud: ¿qué arrastra a qué?
Estímulo y respuesta
12 pasos · entrada oscilante
La entrada oscila y el nivel la sigue con retardo y suavizado.
Cuando la entrada supera a la salida el nivel sube; cuando cae por debajo, baja. El nivel es la memoria de las entradas pasadas.
Preguntas para explorar
- Con amplitud 0, ¿qué relación hay entre base, salida y nivel final?
- Con base 3 y amplitud 3, ¿en qué pasos la entrada se anula?
- Si solo mirás el nivel final, ¿qué información de las entradas perdés?
Ver respuestas sugeridas
- Con amplitud 0 la entrada es constante (= base): el nivel final es inicial + 12 × (base − salida), con piso en 0.
- Cerca de t = 8, donde el seno vale −1 y la entrada 3 − 3 se anula. Búscalo en el gráfico.
- La forma de la historia: picos, mínimos y cuándo sube o baja. El final solo dice dónde termina.
07 · Comprensión
Confusiones frecuentes
«Las entradas se inventan sobre la marcha»
Las entradas son datos del escenario y deben escribirse antes de correr: de dónde vienen, con qué unidades y con qué rango.
«Cualquier salida sirve»
Cada salida debe responder a un objetivo. La métrica huérfana nadie la mira y su cálculo nadie lo mantiene.
«Parámetro y entrada dan igual»
No: la entrada es una serie temporal y el parámetro un valor de escenario. Mezclarlos rompe la firma y los experimentos.
«El formato de salida se ve después»
El formato es contrato: si cambia a mitad del proyecto, se rompen gráficos, comparaciones y decisiones.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: leer la frontera
Ejecutá y describí la frontera: ¿qué entra, qué sale y qué queda fuera?
def simular_con_entradas(nivel_inicial, entradas, salida):
n = nivel_inicial
historia = []
for e in entradas:
n = max(n + e - salida, 0)
historia.append(n)
return historia
h = simular_con_entradas(10, [3, 3, 0, 0, 3, 3], 2)
print(h, "final:", h[-1])
Ver solución razonada
Entran la serie [3, 3, 0, 0, 3, 3] y el nivel inicial; sale la historia [11, 12, 10, 8, 9, 10]. Fuera quedan el origen de las entradas y el destino del nivel: supuestos a declarar.
Ejercicio 2: resumir sin perder
Calculá final, promedio y mínimo de esa historia. ¿Qué cuenta cada métrica?
h = [11, 12, 10, 8, 9, 10]
print("final:", h[-1])
print("promedio:", round(sum(h) / len(h), 2))
print("mínimo:", min(h))
Ver solución
Final 10 (dónde termina), promedio 10.0 (nivel típico) y mínimo 8 (peor momento). Tres lecturas distintas de la misma historia.
Ejercicio 3: diseñar el contrato
Escribí la firma y el contrato de un modelo de inventario diario. ¿Entradas, parámetros y salidas?
Ver una posible respuesta
def simular_inventario(stock_inicial, ventas_por_dia, reposicion):
# Entradas: ventas_por_dia (serie). Parámetros: reposicion.
# Salidas: historia del stock y métrica de quiebres.
stock = stock_inicial
historia, quiebres = [], 0
for v in ventas_por_dia:
stock = stock - v + reposicion
if stock < 0:
quiebres += 1
stock = 0
historia.append(stock)
return historia, {"quiebres": quiebres}
print(simular_inventario(20, [5, 8, 6, 9], 6))
El contrato queda en la firma y el comentario: serie de ventas adentro, historia y quiebres afuera. Todo lo demás es interior del modelo.
09 · Síntesis
Ideas para recordar
- Entradas y salidas definen la frontera: el contrato del modelo.
- Las entradas son series temporales; los parámetros, valores de escenario.
- La salida cruda es historia; la métrica la resume para decidir.
- Cada salida responde a un objetivo; cada entrada trae unidades y origen.
- En Python, la firma
(estado, entradas, parámetros)escribe la frontera.
En el próximo tema fijaremos el punto de partida: las condiciones iniciales.