Simulación Basada en Agentes · Tema 05

Comportamiento

Lo que el agente hace en cada paso: su repertorio de acciones, cómo elige una y cómo esa elección cambia el mundo.

01 · Punto de partida

De la ficha a la acción

En el Tema 4 el agente tenía su ficha completa: grupo, tolerancia, posición, energía. Pero una ficha quieta no simula nada. El comportamiento es la ficha en movimiento: lo que el agente efectivamente hace cuando le toca actuar.

Un forrajeador vaga, come o descansa. Un auto acelera, frena o cambia de carril. Una persona sale, se aísla o se vacuna. Cada modelo define un repertorio pequeño y una forma de elegir.

  • ¿Qué acciones puede hacer este agente?
  • ¿Cuándo elige cada una?
  • ¿Cuánto dura y cuánto cuesta cada acción?
  • ¿Qué cambia en el mundo después de ejecutarla?

02 · Definición

Tres familias de acciones

Casi todo repertorio combina estas tres familias:

↗

Moverse

Cambiar de posición: vagar, acercarse a comida, huir de peligro, buscar salida. (Tema 12)

●

Transformarse

Cambiar el propio estado: gastar energía, enfermarse, cambiar de opinión, descansar.

⇄

Afectar a otros

Cambiar el entorno o a vecinos: comer una planta, contagiar, comprar, enviar un mensaje.

Repertorios mínimos que ya generan fenómenos.
ModeloRepertorioFenómeno que aparece
Forrajeovagar, comer, descansarZonas peladas y senderos de explotación.
Tráficoacelerar, frenar, mantenerOlas de frenado sin causa visible.
Contagiosalir, aislarseCurvas epidémicas con picos.
Schellingquedarse, mudarseBarrios segregados.

03 · Propiedades

Cómo es una buena acción

Una acción bien definida responde cuatro cosas antes de programarse:

Acción vaga

“Buscar comida”

Nadie sabe cuánto se mueve, cuánto gasta ni cuándo termina. Dos programadores la codifican distinto.

Acción simulable

“Avanzar 0,03 hacia la comida vista”

Declara condición, desplazamiento, costo y efecto. Se puede repetir, medir y comparar.

Condición
Cuándo se puede ejecutar: hay comida a menos de r, energía mayor que 2.
Duración
Cuánto ocupa: un paso, varios pasos. En este curso, casi siempre un paso.
Costo
Qué consume: energía, tiempo, dinero. Sin costo todo es gratis y nada es creíble.
Efecto
Qué cambia: nueva posición, menos energía, una planta menos, un vecino contagiado.

04 · Selección

Del repertorio a la acción del paso

Elegir es aplicar prioridades en orden, sin ambigüedad:

repertorio→condiciones→una acción
  1. 1
    Listar el repertorio.

    Descansar, comer, vagar: pocas acciones con nombre claro.

  2. 2
    Ordenar por prioridad.

    Si puede comer, come; si está lleno, descansa; si no, vaga.

  3. 3
    Ejecutar una sola.

    Un agente, un paso, una acción: así el modelo es legible y comparable.

05 · Representación en Python

Cada acción es un método, elegir es un if

El repertorio se lee mejor como métodos con nombres de verbo. La selección es una cascada de condiciones con prioridades explícitas.

Python en tu navegador. Cambiá la energía o la distancia a la comida y observá cómo cambia la acción elegida.

class Agente:
    def __init__(self, energia=8):
        self.energia = energia

    def descansar(self):
        self.energia = min(20, self.energia + 1)
        return "descansar"

    def comer(self):
        self.energia = min(20, self.energia + 4)
        return "comer"

    def vagar(self):
        self.energia -= 1
        return "vagar"

    def comportarse(self, ve_comida):
        if ve_comida:
            return self.comer()
        if self.energia > 15:
            return self.descansar()
        return self.vagar()

yo = Agente(energia=16)
print(yo.comportarse(ve_comida=False))
print(yo.comportarse(ve_comida=True), yo.energia)

Con energía 16 y sin comida descansa; con comida a la vista come aunque esté lleno: la oportunidad manda.

Medir el comportamiento colectivo

Un paso no dice nada; cien pasos con 40 agentes muestran el reparto del repertorio.

import random
random.seed(5)

pob = [Agente(energia=random.randint(5, 18)) for _ in range(40)]
conteo = {"descansar": 0, "comer": 0, "vagar": 0}
for a in pob:
    ve = random.random() < 0.3
    conteo[a.comportarse(ve_comida=ve)] += 1
print(conteo)

06 · Exploración

Laboratorio: vagar, comer o descansar

Cada agente aplica la misma prioridad: si ve comida cerca come (amarillo), si está lleno descansa (gris), si no vaga (azul). Movete los controles y observá cómo el entorno cambia el reparto sin cambiar la regla.

EXPERIMENTO 05

Repertorio en un mundo con comida

comer > descansar > vagar

Los resultados numéricos aparecen debajo.
Comiendo0 %
Vagando0 %
Descansando0 %
LecturaExploran

Con 45 comidas, parte del grupo come y el resto vaga.

Amarillo come, azul vaga, gris descansa. Los puntos amarillos pequeños son comida. La misma regla produce otro reparto si cambia la comida o la energía.

Preguntas para explorar

  1. Poné comida en 0. ¿Qué comportamientos sobreviven? ¿Por qué descansar depende de la energía y no del entorno?
  2. Subí la energía inicial a 18 con comida 45. ¿Aumenta comer o descansar? ¿Qué nos dice sobre prioridades?
  3. Achicá el radio de vista al mínimo con mucha comida. ¿Los agentes comen más o menos? ¿Ven el mundo o solo sus cercanías?
Ver respuestas sugeridas
  1. Solo vagar y descansar: sin comida nadie puede comer. Descansar mira el estado interno, no el entorno: por eso sigue ocurriendo en un desierto.
  2. Aumenta descansar: con energía alta la segunda prioridad se dispara antes de vagar. Las prioridades ordenan el repertorio.
  3. Comen menos aunque haya comida: la comida lejana es invisible. El comportamiento depende del mundo percibido, no del real.

07 · Comprensión

Confusiones frecuentes

«Comportamiento es lo mismo que regla»

La regla decide; el comportamiento es lo decidido y ejecutado. La regla es el if, el comportamiento es el verbo que se observa.

«El agente puede hacer todo a la vez»

Comer y descansar a la vez traba la contabilidad de energía y tiempo. Una acción por paso mantiene el modelo auditable.

«Sin costo no pasa nada»

Sin costo vagar es gratis y descansar inútil: el reparto se vuelve arbitrario. El costo diferencia las acciones.

«Más acciones es más inteligente»

Más acciones exigen más condiciones y más parámetros. La inteligencia del modelo está en 2–3 acciones bien elegidas.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: ejecutar una acción

Ejecutá y verificá el efecto sobre la energía. Luego hacé descansar dos veces seguidas.

class Agente:
    def __init__(self, energia=8):
        self.energia = energia
    def vagar(self):
        self.energia -= 1
        return "vagar"
    def descansar(self):
        self.energia = min(20, self.energia + 1)
        return "descansar"

a = Agente(8)
print(a.vagar(), a.energia)
Ver solución razonada

Vagar deja energía en 7. Dos descansos desde 7 la llevan a 9: cada acción tiene firma energética distinta.

Ejercicio 2: predecir la elección

Sin ejecutar primero: con energía 16 y sin comida, ¿qué elige este agente? Comprobalo después.

class Agente:
    def __init__(self, energia):
        self.energia = energia
    def comportarse(self, ve_comida):
        if ve_comida:
            return "comer"
        if self.energia > 15:
            return "descansar"
        return "vagar"

print(Agente(16).comportarse(False))
Ver solución

Elige descansar: la primera condición falla y la segunda se cumple. El orden de los if es la prioridad.

Ejercicio 3: contar el repertorio

Simulá 100 decisiones con 30 % de avistajes y contá el reparto. Cambiá la energía a 18 y compará.

Ver una posible respuesta
import random
random.seed(6)

def eleccion(energia, ve):
    if ve:
        return "comer"
    return "descansar" if energia > 15 else "vagar"

for energia in [8, 18]:
    c = {"comer": 0, "descansar": 0, "vagar": 0}
    for _ in range(100):
        c[eleccion(energia, random.random() < 0.3)] += 1
    print(energia, c)

Con 8 domina vagar; con 18 domina descansar; comer ronda el 30 % en ambos: la oportunidad de comer es independiente del estado.

09 · Síntesis

Ideas para recordar

  • El comportamiento es el repertorio observable: moverse, transformarse, afectar a otros.
  • Cada acción declara condición, costo y efecto.
  • La selección ordena prioridades y ejecuta una sola acción por paso.
  • En Python, cada acción es un método que devuelve su nombre.
  • El mismo repertorio produce otro reparto si cambia el entorno o la energía.

En el próximo tema estudiaremos las reglas de decisión: cómo escribir esos si-entonces sin ambigüedad.