Modelos y Simulación · Tema 09

Entradas y salidas de un modelo

Estímulos que entran, respuestas que salen y la frontera que los separa: el contrato del modelo.

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.

Entradas y salidas en modelos conocidos.
ModeloEntradasSalidas
Tanquecaudal de entrada por pasohistoria del nivel, nivel final
Colallegadas por pasoespera media, cola máxima
Gananciademanda, márgenesganancia por opción, decisión
Inventarioventas por díaquiebres, costo de stock

03 · La frontera como contrato

Diseñar la interfaz antes del interior

  1. 1
    Listá las entradas con unidades.

    «llegadas por paso (clientes)», no «dato de entrada». Sin unidades no hay contrato.

  2. 2
    Listá las salidas con formato.

    «historia (lista) y métricas (dict)», no «resultados». Quien usa el modelo debe saber qué recibe.

  3. 3
    Separá entradas de parámetros.

    La entrada varía paso a paso; el parámetro fija el escenario (Tema 7). La firma lo muestra.

  4. 4
    Declará 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é?

EXPERIMENTO 09

Estímulo y respuesta

12 pasos · entrada oscilante

Los resultados numéricos aparecen debajo.
Entrada media3,00
Nivel final10,42
Nivel mínimo8,21
LecturaOscila

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

  1. Con amplitud 0, ¿qué relación hay entre base, salida y nivel final?
  2. Con base 3 y amplitud 3, ¿en qué pasos la entrada se anula?
  3. Si solo mirás el nivel final, ¿qué información de las entradas perdés?
Ver respuestas sugeridas
  1. Con amplitud 0 la entrada es constante (= base): el nivel final es inicial + 12 × (base − salida), con piso en 0.
  2. Cerca de t = 8, donde el seno vale −1 y la entrada 3 − 3 se anula. Búscalo en el gráfico.
  3. 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.