01 · Punto de partida
Del sistema al modelo
En el Tema 1 delimitamos el sistema: sus componentes, su frontera y su entorno. Pero experimentar sobre el sistema real suele ser caro, lento o peligroso: no podemos frenar una ciudad para probar semáforos ni saturar un servidor real para ver cuándo se cae.
La salida es construir un modelo: una representación simplificada del sistema que conserva lo esencial para una pregunta concreta y descarta el resto.
- ¿Qué pregunta debe responder el modelo?
- ¿Qué parte del sistema conservamos y cuál descartamos?
- ¿Con qué datos lo alimentamos?
- ¿Cuándo deja de ser válido?
02 · Definición
¿Qué es un modelo?
Todo modelo tiene tres ingredientes inseparables:
Simplifica
Elimina detalle irrelevante. Un mapa no reproduce cada árbol: conserva calles y distancias útiles para viajar.
Representa
Conserva la estructura que importa: componentes, relaciones y reglas de cambio del sistema original.
Sirve a un propósito
Responde una pregunta: cuánto esperar, cuánto stock pedir, qué nivel alcanzará el tanque.
El mismo sistema admite muchos modelos. Una fila de banco puede modelarse con un promedio en una planilla, con una fórmula de teoría de colas o con un programa que simula cada cliente. Ninguno es «el verdadero»: cada uno sirve a una pregunta distinta con un costo distinto.
| Representación | Ejemplo | Cuándo conviene |
|---|---|---|
| Mental / verbal | «Si llueve, la espera crece» | Para razonar rápido y comunicar. |
| Diagrama | Bloques de fila, cajeros y salidas | Para ordenar componentes y flujos. |
| Matemática | usuarios(d) = 800 + 45d | Para calcular y comparar con precisión. |
| Computacional | Función Python que actualiza el nivel | Para experimentar con muchos casos. |
03 · Anatomía
Elementos de un modelo
Aunque los desarrollaremos en los próximos temas, conviene ver el mapa completo desde ahora:
- Variables
- Magnitudes que cambian dentro del modelo: nivel, espera, stock. (Tema 7)
- Parámetros
- Valores que configuran el comportamiento: caudal, tasa, capacidad. (Tema 7)
- Supuestos
- Decisiones de simplificación declaradas: «llegadas constantes», «sin fallas». (Tema 20)
- Validez
- Rango donde el modelo responde bien y fuera del cual no debe usarse. (Temas 35–36)
Modelo útil
Simple y honesto
Declara sus supuestos, responde la pregunta con datos disponibles y avisa dónde deja de valer.
Modelo perfecto inútil
Detallado e inusable
Quiere reproducir todo, pide datos imposibles y nadie puede interpretar ni mantener.
04 · Mapa del curso
Una primera mirada a los tipos de modelos
Los tipos se estudiarán a fondo en los Temas 12 a 18. Por ahora, alcanzan tres distinciones para ubicarse:
- 1Determinístico o estocástico.
Sin azar (misma entrada, misma salida) o con azar (llegadas aleatorias, fallas).
- 2Estático o dinámico.
Una foto (costo de hoy) o una película (nivel durante 12 pasos).
- 3Discreto, continuo o híbrido.
Por eventos (clientes), por flujos (litros) o mezclando ambos.
05 · Representación en Python
Un modelo es una función con supuestos
En Python, un modelo suele ser una función: recibe el estado y los parámetros, aplica las reglas y devuelve el resultado. Los supuestos van en comentarios o en un diccionario, nunca solo en la cabeza del programador.
Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Podés editar los parámetros y volver a ejecutar para ver cómo responde el modelo.
def modelo_lineal(usuarios_iniciales, aumento_diario, dias):
# Supuesto: el aumento diario se mantiene constante.
return usuarios_iniciales + aumento_diario * dias
for d in [0, 6, 30]:
print(d, modelo_lineal(800, 45, d))
Probá cambiar el aumento a 20 o los días a 365: el programa responde igual, pero ¿sigue siendo válido el supuesto?
Agregar un límite del mundo real
Ningún tanque es infinito y ningún público es ilimitado. Un tope convierte el modelo lineal en un modelo con saturación, mucho más creíble:
def modelo_con_tope(nivel, entrada, salida, tope, pasos):
# Supuestos: flujos constantes por paso y nivel entre 0 y tope.
historia = []
for t in range(pasos):
nivel = nivel + entrada - salida
if nivel < 0:
nivel = 0
if nivel > tope:
nivel = tope
historia.append(nivel)
return historia
print(modelo_con_tope(10, 3, 2, 14, 6))
06 · Exploración
Laboratorio: lineal frente a modelo con tope
Compará el modelo lineal sin límites con el modelo con tope. Ambos comparten parámetros; solo cambia la regla de saturación. ¿Cuándo coinciden y cuándo se separan?
El mismo sistema, dos modelos
lineal vs. con tope
Con balance +1, el lineal llega a 22 y el modelo con tope se queda en 14.
La curva lima es el modelo lineal sin límites; la curva naranja es el mismo modelo con tope. La línea punteada marca la capacidad máxima.
Preguntas para explorar
- Con balance 0, ¿coinciden ambos modelos? ¿Por qué?
- Con balance negativo e inicial 10, ¿cuándo se separan las curvas?
- Si el tope real fuera 20 pero modelás con 14, ¿el error es del sistema o del modelo?
Ver respuestas sugeridas
- Sí, siempre que el tope no actúe: con balance 0 el nivel queda constante por debajo del tope y la regla extra nunca se dispara.
- En el primer paso donde alguna curva toca el tope (o el piso). Antes de eso son idénticas.
- Del modelo: el sistema real tiene su tope verdadero; elegir 14 fue tu decisión de representación (un supuesto).
07 · Comprensión
Confusiones frecuentes
«El modelo es la realidad»
El modelo representa algunos aspectos del sistema para una pregunta. Confundirlo con la realidad lleva a exigirle respuestas que nunca prometió.
«Más detalle siempre es mejor»
Cada detalle agrega parámetros, datos y fuentes de error. El mejor modelo es el más simple que responde la pregunta con la precisión requerida.
«Si el código corre, el modelo es correcto»
Que el programa ejecute solo prueba que no hay errores de sintaxis. La corrección del modelo se discute con supuestos, datos y comparación con el sistema.
«Un modelo calibrado es un modelo verdadero»
Calibrar ajusta parámetros para parecerse a datos pasados. La validez futura depende de que los supuestos sigan cumpliéndose.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: explicitar el modelo
Ejecutá este modelo empaquetado como datos + función. Luego cambiá el supuesto del aumento y observá el efecto.
modelo = {
"nombre": "Usuarios de una app",
"supuesto": "aumento diario constante",
"parametros": {"inicial": 800, "aumento": 45},
}
def estimar(parametros, dias):
return parametros["inicial"] + parametros["aumento"] * dias
print(modelo["supuesto"])
print(estimar(modelo["parametros"], 6))
Ver solución razonada
El modelo responde 1070 para 6 días. El supuesto queda escrito dentro del diccionario: si el aumento deja de ser constante (fines de semana, saturación), hay que cambiar el modelo, no solo los números.
Ejercicio 2: comparar dos modelos
Sin ejecutar primero: con nivel 10, entrada 2, salida 2, tope 12 y 3 pasos, ¿qué devuelve cada modelo? Comprobalo después.
def lineal(nivel, balance, pasos):
return [nivel + balance * (t + 1) for t in range(pasos)]
def con_tope(nivel, entrada, salida, tope, pasos):
historia = []
for t in range(pasos):
nivel = nivel + entrada - salida
if nivel < 0:
nivel = 0
if nivel > tope:
nivel = tope
historia.append(nivel)
return historia
print(lineal(10, 0, 3))
print(con_tope(10, 2, 2, 12, 3))
Ver solución
Ambos devuelven [10, 10, 10]: con balance cero y nivel por debajo del tope, los modelos coinciden. La diferencia solo aparece cuando el tope actúa.
Ejercicio 3: romper el supuesto
El modelo lineal predice 2150 usuarios a los 30 días con aumento 45. Si el público máximo posible es 1500, ¿qué falla: el cálculo o el modelo? Ajustá el código con un tope.
Ver una posible respuesta
def estimar_con_tope(inicial, aumento, dias, tope):
valor = inicial + aumento * dias
if valor > tope:
valor = tope
return valor
print(estimar_con_tope(800, 45, 30, 1500))
El cálculo 800 + 45 * 30 = 2150 es correcto, pero el modelo es inválido fuera de su rango. Con tope 1500, la respuesta pasa a 1500: falla el modelo, no la aritmética.
09 · Síntesis
Ideas para recordar
- Un modelo simplifica, representa y sirve a un propósito explícito.
- El mismo sistema admite varios modelos con distinto costo y precisión.
- Variables, parámetros, supuestos y validez son los elementos de todo modelo.
- En Python, un modelo es una función con parámetros y supuestos escritos.
- Un modelo sin rango de validez declarado es una herramienta peligrosa.
En el próximo tema estudiaremos el concepto de simulación: cómo experimentar con el modelo en lugar del sistema real.