Simulación Basada en Agentes · Tema 19

Comportamiento global

Patrones del conjunto a partir de lo local: manchas, olas y consensos que nadie ordenó.

01 · Punto de partida

Nadie pintó las manchas

En el Tema 18 cada agente miraba cerca y comparaba un umbral. Ahora alejamos la cámara: el mapa muestra manchas de opinión, olas de contagio, filas de peatones, barrios de Schelling. Ningún agente quiso dibujarlas y sin embargo ahí están.

Ese dibujo es el comportamiento global: lo que se ve al agregar miles de decisiones locales en espacio y tiempo. No vive en ningún agente: vive en la suma.

  • ¿Qué se agrega: fracción, mapa, serie en el tiempo?
  • ¿El patrón persiste en réplicas o fue suerte de una corrida?
  • ¿Desaparece si mezclo posiciones o rompo vecindarios?
  • ¿Qué métrica lo captura sin mirar el dibujo?

02 · Definición

Agregado, patrón y medida

Todo global combina qué se suma, qué forma aparece y con qué número se atrapa:

∑

Agregado

La suma que resume: fracción activa, cobertura, flujo por puerta. Un número por ronda en vez de mil estados.

◩

Patrón

La forma que persiste: manchas, olas, carriles, ciclos. Si se borra al mezclar, era estructura, no ruido.

📏

Medida

La métrica declarada antes de correr: consenso, pares mixtos, cuadrantes. Sin métrica el ojo inventa patrones.

El mismo agregado en cada dominio.
MundoAgregadoPatrón típico
Opinionesfracción mayoritariamanchas de consenso local
Contagiocurva de activosola que avanza por frente
Multitudflujo por puertacarriles y arcos
Schellingvecinos parecidosbarrios segregados

03 · Ruido y patrón

Ruido que se promedia frente a estructura que persiste

Una foto con suerte muestra de todo. El patrón de verdad sobrevive a réplicas, a mezclas y al tiempo.

Ruido

Suerte de una corrida

Fluctúa y se borra al promediar: réplica 1 ≠ réplica 2. Contarlo como hallazgo es leer caras en las nubes.

Patrón

Estructura que vuelve

Persiste en réplicas y muere si rompo vecindarios: mezclo → desaparece. Esa prueba lo separa del azar.

Serie temporal
Agregado ronda por ronda: curva de activos, de consenso, de flujo. Muestra velocidad y techo.
Distribución espacial
Dónde están los estados en el mapa: mezclados al azar o en manchas. Se mide con pares mixtos.
Cluster
Grupo conectado del mismo estado: mancha que crece si lo local copia a lo cercano.
Estado estacionario
Agregado que ya no cambia aunque los agentes sigan turnando: consenso total o frontera quieta.

04 · Ciclo

El paso que mide el conjunto

Cada experimento define, corre y contrasta antes de afirmar, en este orden:

definir→correr→contrastar
  1. 1
    Definir la medida.

    Fracción, pares mixtos, cobertura: una fórmula con nombre antes de ver resultados.

  2. 2
    Correr réplicas.

    Varias historias con la misma regla y distinta semilla: promedio y dispersión, no una foto.

  3. 3
    Contrastar con azar.

    Mezclar posiciones o romper vecindarios: si el patrón sobrevive, no era estructura.

05 · Representación en Python

Agregar es contar sobre la lista

Lo global no toca agentes: cuenta estados. La serie guarda un número por ronda para dibujar la curva después.

Python en tu navegador. Cambiá la mezcla inicial y observá cómo el consenso parte de otro piso.

estados = [True, True, False, True, False]
consenso = max(sum(estados), len(estados) - sum(estados)) / len(estados)
print(round(consenso, 2))

Da 0,6: seis de cada diez del lado mayoritario. El consenso mide dominio, no verdad.

Pares mixtos que delatan fronteras

Dos vecinos de distinto estado son frontera: muchas fronteras es mezcla, pocas es manchas.

pares = [(True, True), (True, False), (False, False), (True, False)]
mixtos = sum(1 for a, b in pares if a != b)
print(mixtos, mixtos / len(pares))

06 · Exploración

Laboratorio: manchas sin pintor

Los agentes están quietos con opinión mezclada 50/50. En cada ronda síncrona cada uno copia la mayoría de sus vecinos dentro del horizonte. Nadie ve el mapa y sin embargo aparecen manchas. Las líneas tenues son vecindades.

EXPERIMENTO 19

Copiar cerca mancha lejos

copio la mayoría de mi horizonte

Los resultados numéricos aparecen debajo.
Consenso50 %
Pares mixtos0 %
Manchas0
LecturaMezcla

Con 60 agentes y horizonte 0,20, la mayoría local dibuja manchas.

Cada punto es un agente fijo: amarillo una opinión, verde la otra. Las líneas grises son vecindades. El modelo corre en rondas síncronas con doble buffer. Pulsá Nueva réplica para otra mezcla inicial.

Preguntas para explorar

  1. Con 0 rondas, ¿cuánto consenso y cuántos mixtos hay? ¿Por qué la mezcla inicial es el punto cero del patrón?
  2. Con horizonte mínimo y 15 rondas, ¿aparecen manchas o queda salpicado? ¿Qué cambia con horizonte grande?
  3. Repetí la misma configuración 3 veces. ¿Gana siempre el mismo color? ¿Qué parte es regla y qué parte es sorteo inicial?
Ver respuestas sugeridas
  1. Consenso ~50 % y mixtos altos: azar sin copiar. Ese es el contraste: todo patrón posterior lo hizo la regla.
  2. Queda salpicado: sin vecinos no hay mayoría que copiar. Con horizonte grande cada uno ve más y las manchas crecen y se tocan.
  3. No: la mayoría inicial manda por barrio y cada mezcla arma otro mapa. La regla (copiar mayoría) es fija; el ganador lo sortea el inicio.

07 · Comprensión

Confusiones frecuentes

«Global es sumar agentes»

Sumar sin métrica declarada es amontonar números. Global es agregado con fórmula, serie y contraste contra azar.

«Una corrida con manchas prueba todo»

Una corrida prueba una historia. El patrón se promedia en réplicas y se prueba mezclando: si muere al mezclar, era estructura.

«Más rondas siempre ordenan más»

El sistema se estaciona: llega a consenso o a frontera quieta y deja de moverse. Más rondas no es más patrón.

«El patrón estaba en la regla»

La regla dice copiar al vecino; nadie programó manchas. El patrón es consecuencia, no instrucción: por eso se mide arriba.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: medir consenso

Ejecutá y verificá el dominio mayoritario. Luego cambiá dos estados y observá cómo se mueve.

estados = [True, True, False, True, False, False, True]
n = len(estados)
print(round(max(sum(estados), n - sum(estados)) / n, 2))
Ver solución razonada

Da 0,57: 4 de 7 del lado True. El consenso no dice dónde están: para eso hacen falta mixtos.

Ejercicio 2: predecir la mayoría local

Sin ejecutar primero: vecinos [True, False, True] con copia de mayoría. ¿Qué adopta? ¿Y con empate 1–1?

def mayoria(vec):
    return sum(vec) * 2 >= len(vec)

print(mayoria([True, False, True]), mayoria([True, False]))
Ver solución

Da True, True: con 2 de 3 gana True y el empate queda en True por el ≥. El desempate se declara: acá conserva el propio si se incluye.

Ejercicio 3: mezcla que borra manchas

Si mezclo posiciones al azar, ¿qué le pasa a los mixtos? Escribí la intuición en una línea de código.

Ver una posible respuesta
print("mezclar sube mixtos y borra manchas")

La mezcla rompe vecindarios y sube mixtos: si el patrón era estructura local, el contraste lo delata. Es la prueba del Tema 19.

09 · Síntesis

Ideas para recordar

  • Global es agregado en espacio y tiempo: fracción, serie y mapa con métrica previa.
  • Ruido fluctúa y se promedia; patrón persiste en réplicas y muere al mezclar.
  • Consenso dice cuánto domina y mixtos si domina en manchas o salpicado.
  • La prueba es contrastar con azar: mezclar posiciones o romper vecindarios.
  • En Python, agregar es contar estados y guardar un número por ronda.

En el próximo tema estudiaremos la emergencia: orden inesperado que surge sin control central.