01 · Punto de partida
El mundo no es un escenario pintado
En el Tema 7 diseñamos el mundo; ahora lo ponemos en movimiento. Un agente lee el entorno (¿hay pasto aquí?) y lo escribe (come, pisa, marca, construye). El entorno responde: se agota, se regenera o queda marcado para el siguiente.
Esa ida y vuelta crea la primera retroalimentación del curso: comer hoy deja menos para mañana, y el hambre de mañana cambia dónde buscar.
- ¿Qué lee el agente del entorno?
- ¿Qué le quita, le agrega o le cambia?
- ¿El recurso se regenera o se acaba?
- ¿La marca de uno guía al siguiente?
02 · Definición
Leer, gastar y marcar
Tres formas de tocar el mundo, de la más simple a la más sutil:
Consumir
Quitar recurso: comer pasto, gastar presupuesto, ocupar una cama. Crea competencia si no alcanza.
Marcar
Dejar información: feromona, huella, reseña. Otros la leen después sin haberse cruzado: estigmergia.
Transformar
Cambiar la estructura: abrir un camino, talar, construir. El mundo futuro ya es otro.
| Mundo | El agente lee | El agente escribe |
|---|---|---|
| Pradera | pasto del parche | come y lo deja pelado; el pasto rebrota |
| Hormiguero | feromona del suelo | refuerza el rastro al volver con comida |
| Ciudad | camas libres | ocupa y libera camas del hospital |
| Mercado | precio y stock | compra y mueve precio y stock |
03 · Acoplamiento
Cuando el recurso no alcanza
El caso que funda la ecología y la economía de agentes: muchos quieren lo mismo y el mundo se vacía.
Entorno pasivo
Comida infinita
Comer no deja huella: cada agente vive aislado y nunca compiten. Útil para depurar, inútil para estudiar escasez.
Entorno activo
Pasto finito que rebrota
Comer pela el parche y obliga a moverse; el rebrote marca el ritmo sostenible. Aparece la capacidad de carga.
- Consumo
- Cantidad retirada por acto: comer 2 de pasto por paso. Sin tope vacía el mundo en un día.
- Regeneración
- Crecimiento por paso hasta un máximo: el pasto rebrota 0,5 con tope 10.
- Capacidad de carga
- Población que el rebrote sostiene sin pelar el mundo. Más agentes, colapso.
- Marca
- Información depositada que otros leen: feromona que se evapora con el tiempo.
04 · Ciclo
El paso con entorno vivo
Cada paso actualiza agentes y mundo, en este orden:
- 1Percibir el parche.
¿Cuánto pasto hay donde estoy parado?
- 2Consumir o marcar.
Comer hasta saciarse o hasta pelar; dejar marca si corresponde.
- 3Regenerar el mundo.
Cada parche rebrota un poco hasta su tope, coman o no.
05 · Representación en Python
Parches que se comen y rebotan
El entorno guarda una lista de pasto por parche. Comer es restar con tope en cero; rebrotar es sumar con tope máximo.
Python en tu navegador. Cambiá el consumo o el rebrote y observá si el parche se pela o se sostiene.
class Pradera:
def __init__(self, parches=5, pasto=6.0, tope=10.0):
self.pasto = [pasto] * parches
self.tope = tope
def comer(self, i, consumo=2.0):
comido = min(self.pasto[i], consumo)
self.pasto[i] -= comido
return comido
def rebrotar(self, tasa=0.5):
self.pasto = [min(self.tope, p + tasa) for p in self.pasto]
return self.pasto
m = Pradera(parches=3, pasto=6.0)
print(m.comer(0, consumo=2.0), m.pasto)
print(m.rebrotar(tasa=0.5))
Comer quita 2 y el rebrote devuelve 0,5: con ese balance el parche se pela en 4 visitas seguidas.
Acoplarlo al agente
El agente come de su parche y guarda energía; el mundo registra la extracción.
class Agente:
def __init__(self, parche=0, energia=5):
self.parche = parche
self.energia = energia
def pastar(self, pradera, consumo=2.0):
self.energia += pradera.comer(self.parche, consumo)
return self.energia
m = Pradera(parches=2, pasto=4.0)
a = Agente(parche=1, energia=5)
print(a.pastar(m), m.pasto)
06 · Exploración
Laboratorio: pastoreo con rebrote
La pradera es una grilla: verde oscuro hay pasto, marrón está pelada. Los agentes (puntos) comen de su parche y el pasto rebrota cada paso. Probá combinaciones: ¿cuántos agentes aguanta el rebrote antes de pelar el mundo?
Comer hoy, rebrotar mañana
pasto(t+1) = pasto − comido + rebrote
Con 25 agentes y rebrote 0,5, la pradera se sostiene.
Cada celda es un parche: cuanto más verde, más pasto. Los puntos claros son agentes. Pulsá Nueva réplica para otra historia con los mismos parámetros.
Preguntas para explorar
- Poné rebrote en 0 con 25 agentes. ¿Qué le pasa al pasto medio? ¿El colapso es rápido o lento?
- Subí el rebrote al máximo con 80 agentes. ¿Alcanza o el mundo se pela igual?
- Repetí la misma configuración 3 veces. ¿El pasto medio final es idéntico? ¿Qué parte es regla y qué parte es encuentro?
Ver respuestas sugeridas
- El pasto medio cae a cero y queda pelado: sin rebrote todo consumo es definitivo. El colapso es gradual porque los agentes se reparten por parches.
- A veces ni el rebrote máximo sostiene 80 bocas: la extracción total supera la regeneración total. Esa es la capacidad de carga.
- No es idéntico: quién pisa cada parche es azaroso. La regla (comer 2, rebrotar r) es fija; la historia de pisadas no.
07 · Comprensión
Confusiones frecuentes
«Comer es solo sumar energía»
Comer también resta pasto. Sin el descuento en el entorno, dos agentes comen el mismo bocado y la escasez desaparece del modelo.
«El rebrote compensa todo»
Solo si la tasa por parche por la cantidad de parches supera el consumo total. La cuenta de balance manda, no la intuición.
«Marcar es decorar»
La marca solo existe si otro agente la lee y cambia su conducta. Feromona que nadie sigue es pintura.
«El orden agente-mundo da igual»
Comer antes o después de rebrotar cambia el resultado del paso. Fijá el orden (percibir → comer → rebrotar) y mantenelo.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: comer con tope
Ejecutá y verificá que no se puede comer más de lo que hay. Luego intentá comer 10 de un parche con 3.
pasto = [6.0, 6.0]
def comer(i, consumo=2.0):
comido = min(pasto[i], consumo)
pasto[i] -= comido
return comido
print(comer(0), pasto)
print(comer(0, consumo=10.0), pasto)
Ver solución razonada
Primero come 2 y queda 4; luego come 4 (no 10) y queda 0: min impide pasto negativo y comer fantasmas.
Ejercicio 2: predecir el pelado
Sin ejecutar primero: parche con 6, consumo 2 y sin rebrote, ¿en cuántas visitas queda pelado? Comprobalo después.
p = 6.0
visitas = 0
while p > 0:
comido = min(p, 2.0)
p -= comido
visitas += 1
print(visitas, p)
Ver solución
En 3 visitas queda en 0: 6 → 4 → 2 → 0. Sin rebrote, todo parche tiene los días contados.
Ejercicio 3: balance sostenible
Con 10 parches, consumo 2 por visita y rebrote 0,5 por parche, ¿cuántas visitas por paso aguanta el mundo sin pelarse?
Ver una posible respuesta
parches = 10
rebrote = 0.5
consumo = 2.0
print("visitas sostenibles:", (parches * rebrote) / consumo)
Aguanta 2,5 visitas por paso: el rebrote total (5) dividido el consumo por visita (2). Más bocas que eso y el mundo se pela: capacidad de carga en una línea.
09 · Síntesis
Ideas para recordar
- Agente y entorno se actualizan mutuamente: leer, gastar/marcar, regenerar.
- El consumo con tope evita comer fantasmas y crea competencia real.
- El rebrote marca el ritmo sostenible y define la capacidad de carga.
- La marca solo existe si otro la lee: estigmergia es comunicación por el mundo.
- En Python, el entorno descuenta y regenera; el agente solo pide.
En el próximo tema estudiaremos la interacción entre agentes: encuentros directos que cambian estados.