Simulación Basada en Agentes · Tema 18

Reglas locales

Decisiones simples con información cercana: mirar poco, comparar un umbral y actuar sin pedir permiso.

01 · Punto de partida

Inteligencia de barrio

En los Temas 16 y 17 el reloj decidía cuándo cambia cada uno. Ahora manda el qué: ¿con qué información decide? Ninguna hormiga cuenta la colonia, ningún conductor promedia la ciudad, ningún vecino pesa toda la manzana. Cada uno mira a los de al lado y aplica una cuenta corta.

Esa cuenta corta es la regla local: pocos vecinos, un umbral y una acción propia. Sin jefe, sin mapa global y sin memoria infinita. Lo global vendrá después (Tema 19) como consecuencia, no como orden.

  • ¿A cuántos vecinos mira y hasta qué distancia?
  • ¿Qué cuenta hace: cuántos, qué fracción, qué distancia?
  • ¿Qué umbral separa actuar de esperar?
  • ¿Funciona igual con 40 que con 40.000?

02 · Definición

Cercanía, cuenta y umbral

Toda regla local combina dónde mira, qué calcula y cuándo dispara:

◎

Cercanía

El horizonte declarado: radio, k vecinos o celda lindera (Tema 13). Fuera del horizonte no hay datos.

#

Cuenta

La estadística corta: cuántos activos, qué fracción parecida, qué distancia mínima. Una línea, no un informe.

⚖

Umbral

El valor que parte actuar de esperar: si vecinos ≥ 2 me activo. Moverlo cambia el modelo entero.

La misma cuenta corta en cada dominio.
MundoCuenta localUmbral típico
Contagiovecinos activos en radio≥ 1 para contagiarse
Schellingfracción parecida en cuadra< 30 % para mudarse
Vidavivas en Moore2–3 para sobrevivir
Tráficohueco al de adelante< frenado para frenar

03 · Alcance

Local que escala frente a global que centraliza

La regla global promedia todo y decide perfecta; la local se equivoca por barrio pero funciona con millones sin jefe.

Regla local

Ojos de vecino

Lee k cercanos: si activos_cerca ≥ u → actuar. Barata, robusta a fallas y ciega a lo lejano: de ahí salen olas y manchas.

Regla global

Ojos de alcalde

Lee el total: si fracción_global > p → actuar. Coordina de golpe pero exige centro que todo lo ve y no escala.

Horizonte
Alcance de la cuenta: radio, k o celda. Todo lo que está más allá no entra aunque sea importante.
Umbral
Número que dispara la acción. Bajo propaga todo; alto apaga todo: el modelo vive en el medio.
Robustez
Seguir funcionando si cae un agente o falla un sensor. Lo local no tiene centro que romper.
Escalabilidad
Costar parecido con 40 que con 40.000. Lo local con k acotado escala; lo global con totales no (Temas 46–47).

04 · Ciclo

El paso que mira al lado

Cada agente filtra, cuenta y compara antes de actuar, en este orden:

mirar cerca→comparar→actuar
  1. 1
    Mirar cerca.

    Pedir solo el vecindario declarado (Tema 13) con su horizonte y tope.

  2. 2
    Comparar umbral.

    Contar activos, fracción o distancia y chequear contra el umbral.

  3. 3
    Actuar propio.

    Cambiar estado, moverse o emitir sin pedir permiso global.

05 · Representación en Python

Contar cerca y comparar

La función recibe al agente y su lista de vecinos, nunca el mundo. La decisión es una comparación de una línea.

Python en tu navegador. Subí el umbral y observá cómo la misma vecindad deja de activar.

def decidir(activos_cerca, umbral=1):
    return activos_cerca >= umbral

print(decidir(0), decidir(1), decidir(3))

Con umbral 1 basta un vecino activo; con umbral 3 hacen falta tres: el número manda, no la intención.

Vecinos primero, regla después

Primero se filtra por radio, después se cuenta: la regla nunca toca posiciones globales.

import math
pos = [(0.2, 0.2), (0.25, 0.22), (0.9, 0.9)]
activo = [True, False, False]

def activos_cerca(i, radio=0.15):
    xi, yi = pos[i]
    n = 0
    for j, (x, y) in enumerate(pos):
        if j != i and math.hypot(x - xi, y - yi) < radio and activo[j]:
            n += 1
    return n

print(activos_cerca(1), decidir(activos_cerca(1)))

06 · Exploración

Laboratorio: el umbral que enciende el barrio

Los agentes están quietos con 3 focos activos. En 10 rondas síncronas cada uno se activa si tiene al menos umbral vecinos activos dentro del horizonte. Las líneas tenues son vecindades de este mapa. ¿Cuánto horizonte hace falta para que el barrio se encienda?

EXPERIMENTO 18

Poco alcanza si está cerca

si activos_cerca ≥ umbral → activar

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

Con horizonte 0,20 y umbral 2, el brote es parcial.

Cada punto es un agente fijo: amarillo activo, verde aún no. Las líneas grises son vecindades dentro del horizonte. El modelo corre 10 rondas síncronas con doble buffer. Pulsá Nueva réplica para otros focos.

Preguntas para explorar

  1. Con horizonte mínimo y umbral 1, ¿se enciende el mapa? ¿Por qué sin alcance no hay cuenta que valga?
  2. Con horizonte grande y umbral 4, ¿alcanza la cercanía o el umbral apaga todo? Probá umbral 1 con el mismo horizonte.
  3. Duplicá los agentes sin tocar horizonte ni umbral. ¿Suben los activos? ¿Qué dice eso de densidad y regla?
Ver respuestas sugeridas
  1. No: casi nadie tiene vecinos y la cuenta da cero. El horizonte crea los candidatos; sin candidatos el umbral nunca se cumple.
  2. El umbral alto apaga: exige 4 activos cerca y casi nadie los reúne. Con umbral 1 el mismo horizonte enciende todo: el número manda.
  3. Sí: más densidad da más vecinos en el mismo horizonte y el umbral se cumple más fácil. La regla fija convierte mapa en destino.

07 · Comprensión

Confusiones frecuentes

«Local es mirar a todos los cercanos»

Cercanos con tope: sin horizonte y sin k la vecindad crece con la densidad y deja de ser local. Local es declarado y acotado.

«El umbral se ajusta solo»

El umbral es parámetro del modelo, no magia: se declara, se barre y se reporta (Tema 41). Ajustarlo a mano hasta que guste es sobreajuste.

«Si es simple no explica nada»

La simpleza es la hipótesis: contagio con ≥ 1, Schelling con 30 %, Vida con 2–3. Lo complejo emerge después (Tema 20), no se programa.

«Local no necesita orden declarado»

La cuenta local también necesita foto o turno (Temas 16–17): con sync avanza parejo, con async encadena. Regla y orden se declaran juntos.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: comparar umbrales

Ejecutá y verificá qué umbral enciende con 2 activos cerca. Luego probá con 0 y con 4.

def decidir(n, umbral):
    return n >= umbral

for u in [1, 2, 3]:
    print(u, decidir(2, u))
Ver solución razonada

Da True, True, False: con 2 cerca encienden umbrales 1 y 2, no el 3. La misma vecindad, tres modelos.

Ejercicio 2: predecir la fracción

Sin ejecutar primero: 2 parecidos de 6 vecinos con umbral de huida < 30 %. ¿Se muda? Comprobalo después.

parecidos, total = 2, 6
print(parecidos / total < 0.3)
Ver solución

Da False: 33 % supera el 30 % y se queda. Con 1 parecido daría True y se mudaría: el borde del umbral decide barrios (Tema 29).

Ejercicio 3: horizonte que crea vecinos

Dos agentes a 0,18. ¿Son vecinos con horizonte 0,15? ¿Y con 0,20? Escribí la condición.

Ver una posible respuesta
d = 0.18
print(d < 0.15, d < 0.20)

Da False, True: el horizonte dibuja la red antes de contar. Sin radio no hay vecinos ni regla que valga.

09 · Síntesis

Ideas para recordar

  • Local es mirar cerca, contar poco y comparar un umbral: sin mapa global.
  • Horizonte crea candidatos y umbral decide: juntos dibujan olas y manchas.
  • Lo local escala y es robusto; lo global coordina pero centraliza y no escala.
  • La firma decidir solo recibe conteos: si pide el mundo, ya no es local.
  • En Python, filtrar por radio primero y decidir con ≥ umbral después.

En el próximo tema estudiaremos el comportamiento global: patrones del conjunto a partir de lo local.