Simulación Basada en Agentes · Tema 46

Escalabilidad sin morir

De decenas a millones de agentes: lo que aguanta y lo que explota.

01 · Punto de partida

El modelo que anda con 60 y muere con 60 mil

En el Tema 45 el modelo rendía examen con pocos. Ahora la cantidad es el examen: el doble bucle que con 60 ni se siente, con 60 mil no termina. La escalabilidad une N (Tema 40), vecinos (Tema 13) y rendimiento (Tema 47) en una pregunta antes de agrandar.

Por eso escalar no es subir N: es cambiar cómo se buscan vecinos. Fuerza bruta compara todos con todos; rejilla solo con los de al lado.

  • ¿Cuántos agentes tiene que bancar?
  • ¿Cuánto cuesta buscar vecinos?
  • ¿Qué atajo baja el costo sin cambiar la regla?
  • ¿Dónde se parte el mapa para repetir?

02 · Definición

N, costo y atajo

Todo escalado combina cuántos, cuánto cuesta y cómo se abarata:

👥

N

Cantidad de agentes: el que multiplica todo. Sin N objetivo no hay diseño.

💸

Costo

Chequeos por tick: todos con todos es N². Lo que mata antes que la memoria.

🗂

Atajo

Rejilla que parte el mapa: solo celdas vecinas. Mismo resultado, fracción del costo.

El mismo costo en cada dominio.
MundoVecinosAtajo típico
Multitudpeatones cerca (Tema 34)celdas que solo miran al lado
Epidemiacontactos en radio (Tema 32)rejilla que evita pares lejanos
Tráficoauto de adelante (Tema 33)orden por carril, no todos
Mercadopar de feria (Tema 36)rondas por turnos, no todos

03 · Costo

Fuerza bruta frente a rejilla

El doble bucle cobra N²; la rejilla cobra N por vecinos reales. Con N chico empatan, con N grande no hay partido.

Fuerza bruta

Todos con todos

Doble bucle: chequeos = N·(N−1)/2. Simple y correcta, imposible con miles.

Rejilla espacial

Solo los de al lado

Celdas más vecinas: chequeos = N·k. Misma regla, costo lineal en la práctica.

Escalabilidad
Cómo crece el costo con N. Se mide con chequeos y ms por tick.
Complejidad
Forma del costo: cuadrática duele, lineal aguanta. El apellido del doble bucle.
Rejilla
Partido del mapa en celdas del tamaño del radio: solo 9 celdas se miran. El atajo del tema.
Lote
Corridas por partes o en paralelo: partir N para repetir. Puerta al Tema 47.

04 · Ciclo

La ronda que mide antes de crecer

Cada escalado cuenta, parte y repite, en este orden:

medir→partir→repetir
  1. 1
    Medir el costo.

    Chequeos y ms con N chico en ambos métodos: el mapa del dolor.

  2. 2
    Partir el mapa.

    Rejilla con celda ≥ radio: solo vecinas se comparan.

  3. 3
    Repetir en grande.

    Subir N con rejilla y vigilar ms: lineal aguanta, cuadrática no.

05 · Representación en Python

Doble bucle que duele, rejilla que salva

Contar pares es una fórmula; partir es un diccionario por celda. Mismo resultado, otro costo.

Python en tu navegador. Duplicá N y observá cómo el bruto se cuadruplica y la rejilla acompaña.

def chequeos_bruto(n):
    return n * (n - 1) // 2

print(chequeos_bruto(60), chequeos_bruto(600), chequeos_bruto(6000))

Con 60 son miles y con 6000 son millones: el N² avisa antes de correr.

Celda que filtra lejos

Llave de celda por división: lejos ni se mira.

def celda(x, y, radio=0.1):
    return (int(x // radio), int(y // radio))

print(celda(0.25, 0.7), celda(0.29, 0.72))

06 · Exploración

Laboratorio: bruto contra rejilla

Nube de agentes con radio vecinal radio sobre rejilla de celdas por lado. Se cuentan pares cercanos con ambos métodos y se cronometra en tu navegador. Verde par cercano, gris punto. ¿A qué N el bruto se vuelve imposible?

EXPERIMENTO 46

El costo a la vista

N·(N−1)/2 vs N·k

Los resultados numéricos aparecen debajo.
Bruto0
Rejilla0
Ahorro0 %
LecturaLiviano

Con 120 agentes, la rejilla ahorra.

Cada punto es un agente fijo: la cuadrícula parte el mapa y las líneas unen pares cercanos. Más celdas es filtro más fino hasta el tamaño del radio. Pulsá Nueva réplica para otra nube con los mismos parámetros.

Preguntas para explorar

  1. Con pocos agentes, ¿el ahorro importa? ¿Por qué con N chico el bruto alcanza aunque sea torpe?
  2. Subí N al máximo con radio grande. ¿El bruto explota? ¿Qué número lo delata antes que el reloj?
  3. Repetí 3 veces con valores medios. ¿El ahorro es idéntico? ¿Qué parte es N y qué parte es mapa?
Ver respuestas sugeridas
  1. No: miles de chequeos ni se sienten. Con N chico la simpleza gana.
  2. Sí: decenas de miles de pares contra cientos. Los chequeos avisan antes que los ms.
  3. No exacto: la nube mueve los pares reales. N pone el techo, el mapa pone los vecinos.

07 · Comprensión

Confusiones frecuentes

«Escalar es subir N»

Subir N sin atajo es pedir N². Escalar es cambiar el método y recién subir.

«Rejilla cambia la regla»

Bien hecha da lo mismo: celda ≥ radio mira todo lo que importa. Si cambia, la celda quedó chica.

«Los ms sobran»

Los ms dependen de tu máquina; los chequeos no. Se informan ambos: uno avisa, el otro compara.

«Con N chico alcanza»

Alcanza para la idea, no para la calle. Probar chico, medir y recién agrandar.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: N² que avisa

Ejecutá y compará 100 contra 1000. Luego probá 10 mil.

def bruto(n): return n * (n - 1) // 2
print(bruto(100), bruto(1000), bruto(10000))
Ver solución razonada

Da miles, cientos de miles y decenas de millones: cada cero en N suma dos en costo. El N² no perdona.

Ejercicio 2: predecir el ahorro

Sin ejecutar primero: bruto 20 mil y rejilla 2 mil. ¿Ahorro %?

print((20000 - 2000) / 20000)
Ver solución

Da 0,9: 90 % menos chequeos con el mismo resultado. El atajo paga.

Ejercicio 3: celda que cubre

Si el radio es 0,1 y hay 8 celdas por lado, ¿la celda cubre? Escribilo.

Ver una posible respuesta
print(1 / 8, (1 / 8) >= 0.1)

Celda 0,125: cubre justo. Menos celdas sobra, más celdas miente.

09 · Síntesis

Ideas para recordar

  • Escalar es medir costo con N chico antes de subir.
  • Bruto es N²; rejilla con celda ≥ radio es N·k.
  • Se informa chequeos y ms de ambos con el mismo N.
  • Celda chica miente; celda justa ahorra.
  • En Python, fórmula de pares más diccionario por celda.

En el próximo tema optimizaremos el rendimiento con grandes poblaciones: tiempo, memoria y optimización.