01 · Punto de partida
Todo modelo empieza por un sistema
Antes de escribir una ecuación o un programa, hay una pregunta previa: ¿cuál es el sistema que queremos estudiar? Una fila de banco, el tránsito de una avenida, el inventario de un negocio, un servidor web o la propagación de un virus son sistemas: conjuntos de elementos que interactúan para un propósito o comportamiento observable.
Delimitar bien el sistema es la mitad del trabajo de simulación. Si la frontera está mal trazada, el modelo responde una pregunta distinta de la que nos interesa.
- ¿Qué partes forman el sistema y qué queda afuera?
- ¿Qué entra al sistema y qué sale de él?
- ¿Durante cuánto tiempo lo observamos?
- ¿Qué detalle necesitamos y cuál podemos ignorar?
02 · Definición
¿Qué es un sistema?
Un sistema se describe con cuatro elementos mínimos:
Componentes
Las partes que lo forman: personas, máquinas, programas, depósitos, variables. Ejemplo: cajeros, clientes y fila.
Relaciones
Cómo se conectan e influyen entre sí: un cliente pasa de la fila al cajero, el stock baja con cada venta.
Frontera y entorno
La línea que separa lo que estudiamos de lo que damos por contexto: horarios, clima, mercado, red.
El cuarto elemento es el comportamiento: lo que el sistema hace en el tiempo (atiende, acumula, transporta, contagia). Ese comportamiento es lo que luego intentaremos reproducir con un modelo.
| Sistema | Componentes | Frontera posible |
|---|---|---|
| Fila de un banco | Clientes, fila, cajeros | Una sucursal, de 9 a 13 h |
| Servidor web | Pedidos, cola, workers, base de datos | Un servicio, durante una hora pico |
| Inventario | Stock, compras, ventas | Un producto, durante un mes |
| Tránsito | Vehículos, semáforos, calles | Un cruce, en hora pico |
03 · Frontera y entorno
Límites, entradas y salidas
Trazar la frontera es decidir qué incluimos y qué tratamos como dato externo. Todo lo que cruza la frontera hacia adentro es una entrada; todo lo que sale es una salida.
Sistema abierto
Intercambia con el entorno
La mayoría de los sistemas reales: entran clientes, pedidos o materia prima, y salen atenciones, respuestas o productos.
Sistema cerrado
Útil como simplificación
Se estudia aislado del entorno durante un rato: un tanque sin recarga, una simulación con población fija.
- Entrada
- Estímulo o recurso que llega desde el entorno: llegadas, pedidos, lluvia, inversión.
- Salida
- Resultado observable: tiempos de espera, respuestas, nivel de stock, casos.
- Entorno
- Todo lo que afecta al sistema pero no controlamos dentro de la frontera.
- Frontera
- Recorte explícito: qué período, qué lugar y qué componentes abarca el estudio.
04 · Ejemplos
Sistemas que un programador puede simular
La misma idea de sistema aparece en dominios muy distintos. Reconocer el patrón entrada → sistema → salida permite reutilizar técnicas:
- 1Cola de atención.
Entradas: llegadas. Sistema: fila y servidores. Salidas: espera promedio y atención total.
- 2Servidor web.
Entradas: solicitudes por segundo. Sistema: cola y workers. Salidas: latencia y errores.
- 3Inventario.
Entradas: compras. Sistema: stock. Salidas: ventas, faltantes y costo.
- 4Tanque con flujos.
Entradas: caudal de entrada. Sistema: nivel acumulado. Salidas: caudal de salida y nivel.
- 5Contagio simple.
Entradas: contactos. Sistema: población susceptible e infectada. Salidas: casos por día.
05 · Representación en Python
Describir un sistema con datos
En Python, un primer paso natural es representar el sistema como datos: nombre, componentes, entradas, salidas y frontera. Todavía no simulamos; solo dejamos por escrito el recorte.
Python en tu navegador. Los bloques de esta página se ejecutan localmente con Pyodide, sin instalar nada. La primera ejecución tarda unos segundos mientras se descarga el intérprete; las siguientes son inmediatas. Podés editar el código y volver a ejecutarlo.
sistema_cola = {
"nombre": "Fila de un banco",
"componentes": ["clientes", "fila", "cajeros"],
"entradas": ["llegada de clientes"],
"salidas": ["clientes atendidos", "espera promedio"],
"frontera": "una sucursal, de 9 a 13 h",
}
for clave, valor in sistema_cola.items():
print(clave, ":", valor)
Consejo: cambiá la frontera (por ejemplo, el horario) y observá que el sistema descripto ya no es el mismo.
Del recorte a la dinámica
Un sistema con acumulación se puede describir con una regla de actualización: el nivel de hoy es el nivel de ayer más lo que entró menos lo que salió. Esta función será la base de nuestras primeras simulaciones:
def simular_tanque(nivel_inicial, entrada, salida, pasos):
nivel = nivel_inicial
historia = []
for t in range(pasos):
nivel = nivel + entrada - salida
if nivel < 0:
nivel = 0
historia.append(nivel)
return historia
print(simular_tanque(10, 3, 2, 6))
06 · Exploración
Laboratorio: el nivel de un tanque
Movete los controles y observá el sistema más simple con memoria: un tanque con un caudal de entrada, un caudal de salida y un nivel que acumula la diferencia. Es el mismo patrón de un inventario, una cola o una batería.
Tanque: entradas, salidas y nivel
nivel(t+1) = nivel(t) + entrada − salida
Con entrada 3 y salida 2, el nivel sube 1 por paso.
La línea muestra el nivel acumulado paso a paso. Si la entrada supera a la salida, el sistema acumula; si es menor, se vacía hasta llegar a cero.
Preguntas para explorar
- Igualá entrada y salida. ¿Qué le pasa al nivel? ¿Cómo llamarías a ese estado?
- Poné la salida mayor que la entrada con nivel inicial 10. ¿En cuántos pasos se vacía?
- ¿Qué parte del dibujo es el sistema y qué parte es el entorno?
Ver respuestas sugeridas
- El nivel queda fijo: entra lo mismo que sale (balance 0). Es un estado de equilibrio.
- Depende de la diferencia: con entrada 3 y salida 4, el nivel baja 1 por paso y se vacía en 10 pasos. Probá otros valores.
- El sistema es el tanque con sus caudales y su nivel. El entorno es lo que provee y recibe el agua, fuera del dibujo; los controles son el escenario que vos fijás.
07 · Comprensión
Confusiones frecuentes
«El sistema es el programa»
No: el sistema es el fenómeno real o recortado (la fila, el servidor, el tanque). El programa será, más adelante, el modelo o la simulación de ese sistema.
«Todo lo que influye debe estar dentro»
Si incluimos todo, el sistema se vuelve inmanejable. Lo que no controlamos ni detallamos va al entorno y entra como entrada o supuesto.
«La frontera es obvia y no hace falta escribirla»
La frontera nunca es obvia: período, lugar y componentes incluidos cambian las conclusiones. Siempre se escribe.
«Más componentes significan mejor estudio»
Más detalle implica más datos, más parámetros y más errores posibles. El recorte debe responder a la pregunta, no a la ambición.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: delimitar el sistema
Completá el diccionario para el sistema «servidor web en hora pico» y ejecutalo. Luego cambiá la frontera y razoná qué cambia.
servidor = {
"nombre": "Servidor web en hora pico",
"componentes": ["solicitudes", "cola", "workers"],
"entradas": ["solicitudes por segundo"],
"salidas": ["latencia promedio", "errores"],
"frontera": "un servicio, 19 a 20 h",
}
print("Componentes:", len(servidor["componentes"]))
print("Frontera:", servidor["frontera"])
Ver solución razonada
El sistema tiene 3 componentes y una frontera de una hora. Si ampliamos la frontera a todo el día, las entradas cambian de ritmo y el sistema ya es otro: habría que incluir turnos, caches fríos y tareas nocturnas.
Ejercicio 2: predecir el nivel
Sin ejecutar primero: si el tanque empieza en 5, entran 4 y salen 4 durante 3 pasos, ¿qué niveles esperás? Después comprobalo con código.
def simular_tanque(nivel_inicial, entrada, salida, pasos):
nivel = nivel_inicial
historia = []
for t in range(pasos):
nivel = nivel + entrada - salida
if nivel < 0:
nivel = 0
historia.append(nivel)
return historia
print(simular_tanque(5, 4, 4, 3))
Ver solución
El balance es 0, así que el nivel queda fijo: [5, 5, 5]. Es un sistema en equilibrio: las entradas compensan exactamente las salidas.
Ejercicio 3: detectar el vaciado
Escribí una función que devuelva en qué paso el tanque llega a cero (o None si nunca se vacía en esos pasos). Probala con nivel 6, entrada 1, salida 3 y 5 pasos.
Ver una posible respuesta
def paso_de_vaciado(nivel_inicial, entrada, salida, pasos):
nivel = nivel_inicial
for t in range(1, pasos + 1):
nivel = nivel + entrada - salida
if nivel <= 0:
return t
return None
print(paso_de_vaciado(6, 1, 3, 5))
El nivel pasa por 4, 2, 0: se vacía en el paso 3. Notá que el sistema no puede bajar de cero: la frontera física impone un límite, idea que retomaremos con condiciones de contorno.
09 · Síntesis
Ideas para recordar
- Un sistema combina componentes, relaciones, frontera, entorno, entradas, salidas y comportamiento.
- La frontera es una decisión explícita: define qué estudiamos y qué tratamos como contexto.
- El mismo fenómeno admite varios recortes; cada recorte es un sistema distinto.
- En Python, un sistema se puede empezar describiendo con diccionarios y funciones de actualización.
- Un tanque con entrada y salida es el arquetipo de sistema con memoria: acumula la diferencia.
En el próximo tema estudiaremos el concepto de modelo: cómo representar ese sistema de forma simplificada para poder razonar y, después, simular.