Simulación Basada en Agentes · Tema 22

Sistemas complejos

Muchas partes interactuando sin control total: diversas, conectadas y con historia.

01 · Punto de partida

Complicado no es complejo

En el Tema 21 un rastro se reparaba solo. Pero ¿qué tienen en común hormiguero, ciudad, mercado e internet? Ninguno tiene jefe con perilla maestra y todos cambian cuando sus partes aprenden. Eso es un sistema complejo: muchas piezas distintas, conectadas en red y con memoria.

Un reloj es complicado: mil piezas predecibles que se desarman y rearmam. Una bandada es compleja: cien piezas simples que nadie desarma sin romper el vuelo. La simulación basada en agentes nació para las segundas.

  • ¿Las partes son iguales o diversas?
  • ¿Interactúan en red o en fila?
  • ¿Aprenden y cambian reglas con el tiempo?
  • ¿Hay perilla central o solo palancas locales?

02 · Definición

Diversidad, conexión y adaptación

Toda complejidad combina quiénes son, cómo se tocan y si aprenden:

◐

Diversidad

Partes distintas: umbrales, gustos, velocidades. Sin diferencia no hay cascadas ni nichos, solo coro.

⛉

Conexión

Red de quién afecta a quién (Tema 13). Rala aísla, densa sincroniza: el medio propaga sorpresas.

↻

Adaptación

Reglas que cambian con la experiencia (Tema 25). El sistema de mañana no es el de hoy: tiene historia.

La misma tríada en cada dominio.
MundoDiversidadConexión y adaptación
Mercadoahorristas y arriesgadosprecios que conectan y estrategias que aprenden
Ciudadfamilias con gustos distintosbarrios que contagian y mudanzas que recuerdan
Epidemiajóvenes y mayores activoscontactos en red e inmunidad que aprende
Internetusuarios y bots variadosenlaces densos y algoritmos que ajustan

03 · Reloj y bandada

Complicado que se desarma frente a complejo que tiene historia

El reloj se entiende por partes; la bandada solo se entiende volando. La historia no se desarma.

Sistema complicado

Reloj predecible

Piezas iguales con roles fijos: sumo aportes y predigo. Se desarma, se repara y no aprende: el pasado no manda.

Sistema complejo

Bandada con historia

Piezas diversas que se copian y aprenden: pequeño cambio, otra historia. No se promedia en una corrida ni se controla con perilla.

Sistema complejo
Conjunto diverso, conectado y adaptativo sin control total. Robusto y sorpresivo a la vez.
No linealidad
El todo no es suma: duplicar causa no duplica efecto (Tema 24). Una chispa enciende o se apaga según red.
Dependencia del camino
La historia manda: el orden de llegadas decide barrios y ganadores. Reordenar el pasado cambia el final.
Control limitado
Sin perilla maestra: solo palancas locales con efectos indirectos. Empujar fuerte suele volverse en contra.

04 · Ciclo

El experimento que revela complejidad

Cada sistema se puebla diverso, se conecta y se deja hacer historia, en este orden:

poblar→conectar→historiar
  1. 1
    Poblar diverso.

    Umbrales, gustos y velocidades repartidos: sin diferencia no hay cascada.

  2. 2
    Conectar en red.

    Radio y vecindario que propagan: ni aislados ni todos con todos.

  3. 3
    Historiar en réplicas.

    Dejar correr y repetir con otra semilla: si las historias divergen, hay complejidad.

05 · Representación en Python

Diversos que se contagian por red

Cada agente tiene su umbral: se activa si la fracción activa de sus vecinos lo supera. La misma chispa enciende o muere según red.

Python en tu navegador. Subí la exigencia y observá cómo la misma red deja de encenderse.

def se_activa(frac_activa, umbral):
    return frac_activa >= umbral

print(se_activa(0.4, 0.3), se_activa(0.2, 0.3))

Con umbral 0,3, 40 % alcanza y 20 % no: la diversidad de umbrales decide quién sigue la ola.

La red propaga, el umbral frena

Sin vecinos activos no hay fracción que valga, aunque el umbral sea bajo.

vecinos = [True, False, False, False]
frac = sum(vecinos) / len(vecinos)
print(round(frac, 2), se_activa(frac, 0.3))

06 · Exploración

Laboratorio: la chispa que a veces incendia

Los agentes tienen umbrales diversos y miran a sus vecinos en radio. Empieza uno solo activo: en 12 rondas síncronas cada uno se suma si la fracción activa de su vecindad supera su umbral. Misma regla, misma red promedio, distinto sorteo: a veces nada, a veces todo. Esa es la firma compleja.

EXPERIMENTO 22

Sin perilla maestra

si fracción_activa ≥ mi_umbral → sumarse

Los resultados numéricos aparecen debajo.
Cascada0 %
Vecinos medios0,0
Rondas útiles0
LecturaChispa

Con 50 agentes y conexión 0,20, la chispa a veces prende.

Cada punto es un agente: amarillo activo, verde aún no. Las líneas grises son conexiones en radio. El modelo corre 12 rondas síncronas con doble buffer. Pulsá Nueva réplica para otra red y otros umbrales.

Preguntas para explorar

  1. Repetí 5 veces sin tocar nada. ¿La cascada final es estable? ¿Por qué la réplica es el resultado, no el adorno?
  2. Con conexión mínima, ¿prende aunque la exigencia sea baja? ¿Qué manda más: red o ganas?
  3. Subí la exigencia al máximo con red densa. ¿Alcanza la conexión si nadie quiere sumarse?
Ver respuestas sugeridas
  1. No: la misma chispa da chispa o incendio según sorteo de red y umbrales. En complejidad el promedio y la dispersión son el hallazgo.
  2. No: sin vecinos no hay fracción que contagie. La red es el canal: sin canal no hay cascada aunque todos quieran.
  3. No: la red lleva la noticia pero el umbral decide. Diversos por conectados: faltando una pata no hay complejidad.

07 · Comprensión

Confusiones frecuentes

«Grande es complejo»

Grande con piezas iguales y sin red es montón, no sistema. Complejo exige diversidad más conexión más historia.

«Complejo es incomprensible»

Complejo es no deducible por suma, pero sí experimentable: réplicas, contrastes y palancas locales lo vuelven tratable.

«Hay que controlarlo todo»

Sin perilla maestra solo quedan palancas locales con efectos indirectos. Empujar el agregado suele mover lo contrario.

«Una réplica representativa alcanza»

En complejidad la historia diverge: una réplica es una novela. El resultado es distribución con semilla (Tema 42).

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: umbral que decide olas

Ejecutá y verificá quién se suma con fracción 0,4. Luego subí la exigencia a 0,5.

def se_activa(frac, umbral=0.3):
    return frac >= umbral

for u in [0.2, 0.3, 0.5]:
    print(u, se_activa(0.4, u))
Ver solución razonada

Da True, True, False: la misma fracción prende o muere según exigencia. La diversidad de umbrales es la nafta.

Ejercicio 2: predecir la red que aísla

Sin ejecutar primero: radio 0 con 50 agentes. ¿Hay cascada aunque todos tengan umbral 0,1?

vecinos = []
frac = sum(vecinos) / len(vecinos) if vecinos else 0
print(frac, frac >= 0.1)
Ver solución

Da 0, False: sin vecinos la fracción es cero y nadie se suma. Conexión cero, cascada cero.

Ejercicio 3: historia que diverge

Misma regla, dos sorteos de red. ¿Deben dar lo mismo? Escribí qué reportarías.

Ver una posible respuesta
print("promedio y dispersión de 30 réplicas")

Reportarías distribución, no foto: en sistemas complejos la divergencia entre réplicas es el dato, no el error.

09 · Síntesis

Ideas para recordar

  • Complejo es diverso, conectado y adaptativo sin control total: reloj no, bandada sí.
  • La historia manda: mismos parámetros, distintashuellas según sorteo.
  • Sin red no hay cascada y sin diversidad no hay sorpresa: faltando una pata no hay complejidad.
  • Solo hay palancas locales: empujar el agregado tiene efectos indirectos.
  • En Python, activar es fracción vecinal contra umbral propio con semilla.

En el próximo tema estudiaremos la retroalimentación: cuando el efecto refuerza o frena la causa.