3 Taller 1 : Buscador de Hongos (Primer Modelo MOBA)

Estamos listos para construir nuestro primer modelo, el modelo de búsqueda de hongos que acabamos de discutir Descripción Modelo Hongos Describiremos el modelo a medida que avanzamos.

3.2 Creando los agentes (buscadores)

Ahora que hemos construido el “mundo” del modelo, necesitamos crear los agentes, en nuestro caso dos buscadores. Esto se hace con el comando create-turtles, La declaración create-turtles 2 [] crea dos tortugas (agentes) y les hace ejecutar el código dentro de los corchetes Agregue el siguiente código al final del procedimiento de setup Haga clic en Comprobar para buscar errores, luego pruébelo usando el botón de setup en la interfaz:

create-turtles 2 [
    set size 2
    set color yellow
  ]





El tamaño y el color son variables predefinidas de los agentes (turtles) por lo que podemos establecerlas sin definirlas. Si se hace clic en el botón setup varias veces, verá que los buscadores se colocan, por defecto, en el centro del mundo, pero su dirección varía al azar:





3.3 Procedimiento go

Ahora vamos a construir el procedimiento go. El procedimiento go define el “comportamiento” del modelo, o sea los procesos que se realizarán una y otra vez, y su orden. Para mantener el procedimiento go simple y fácil de entender, lo cual es muy importante porque es el corazón del programa: casi nunca programamos procesos o acciones reales dentro de ella. En cambio, definimos procedimientos auxiliares donde se programa cada acción. En nuestro modelo de búsqueda de hongos, solo tenemos una acción, la búsqueda de los agentes, por lo tanto el procedimiento go necesita incluir solo un prodcedimiento, que le dice a todas las tortugas (nuestros dos buscadores) que ejecuten un procedimiento de búsqueda:

ask turtles [search]

Para que esto funcione, por supuesto, necesitamos escribir el procedimiento llamado “search” para los buscadores.

  • Agregue la linea, ask turtles [search] al procedimiento go. Luego cree un procedimiento vacio para que pueda verificar el código :
to search
end





Ahora programemos cómo buscan los agentes (buscadores) Cada vez que se ejecuta la búsqueda, queremos que los cazadores giren, un poco si no han encontrado nada recientemente (por ejemplo, en las últimos veinte parcelas recorridas), o bruscamente para seguir buscando en la misma área si encontraron un hongo recientemente.Luego de girar los buscadores deben avanzar una parcela. * Agregue este código al procedimiento de búsqueda, cualquier parte que no entienda búsquela en el diccionario de NetLogo:

ifelse time-since-last-found <= 20
 [right (random 181) - 90]
 [right (random 21) - 10]
 forward 1

Puede deducir buscando en el Diccionario de NetLogo que la declaración right (random 181 - 90) hace que los buscadores (turtles) giren un ángulo aleatorio entre −90 y +90 grados. Observe cómo usamos la instrución ifelse para modelar decisiones. Si la condición booleana que sigue a ifelse es verdadera, entonces el código en el primer conjunto de corchetes se ejecuta; si es falso, se ejecuta el código en el segundo conjunto de corchetes.Una condición booleana es una declaración que es verdadera o falsa. Aquí, la condición booleana

time-since-last-found <= 20

consiste en una comparación: es cierto si el valor de time-since-last-found es menor o igual a 20. Pero cuando ahora presiona el botón Comprobar hay un problema:

¿Qué es time-since-last-found?

Queremos que sea una variable que registre cuánto tiempo ha pasado desde que cada buscador encontró el último hongo Eso significa tres cosas.

  • Primero, Cada cazador debe tener su propio valor único para esta variable, por lo que debe ser una variable de tipo turtle (agente), justo después de la declaración global al comienzo de su programa, agregue
turtles-own [
  time-since-last-found
  ]

En segundo lugar, necesitamos establecer el valor inicial de esta variable cuando creamos los buscadores Estableceremos,asumiendo que los cazadores aún no han encontrado un hongo,un valor mayor que 20.

► En el procedimiento de setup, cambie la instrucción create-turtles a esto:

create-turtles 2 [
   set size 2
   set color yellow
   set time-since-last-found 999
  ]

Finalmente, los cazadores deben actualizar time-since-last-found cada vez que se mueven. Si encuentran un hongo, necesitan restabl



ecer time-since-last-found a cero (¡y recoger el hongo!); de lo contrario, necesitan agregar uno a time-since-last-found.

Definimos encontrar un hongo como llegar a una parcela roja.

► Agregue estas declaraciones al final del procedimiento search:

ifelse pcolor = red [
   set time-since-last-found 0
   set pcolor yellow
   ][
   set time-since-last-found time-since-last-found + 1
   ]
   





Tenga en cuenta que estas declaraciones solo funcionan porque NetLogo permite a los agentes leer y cambiar variables de la parcela en la que están; aquí, los buscadores usan pcolor, el color de su parcela.También tenga en cuenta que para agregar uno a time-since-last-found tuvimos que usar set para asignar su nuevo valor a su antiguo valor más uno. (Tenga en cuenta que en NetLogo debe usar espacios alrededor de operadores aritméticos como “+”; de lo contrario, NetLogo cree que son parte del nombre de la variable).Asegúrese de comprender que las coordenadas de la parcela son variables discretas: solo tienen valores enteros, en unidades de ancho de parcela. En contraste, las coordenadas de tortuga son variables continuas:pueden tomar cualquier valor dentro de una parcela, por ejemplo, 13.11 unidades. Por eso es importante distinguir entre instrucci9nes que se refieren a coordenadas de tortuga y aquellas que se refieren a parcelas. Por ejemplo la instrucción move-to mueve un agente (turtle) al centro de una parcela, pero forward puede colocar un agente en cualquier lugar de esta.Si ahora prueba el programa haciendo clic en el botón go, es posible que no pueda ver mucho porque los agentes buscadores se mueven demasiado rápido Si es así, ajuste el controlador de velocidad de ejecución en la interfaz. (Haga clic en go por segunda vez para detener la ejecución).Voilà! ¡Aquí tenemos nuestro primer programa completo de NetLogo! (¡Asegúrese de guardarlo!) Al correr el modelo , oprimiendo setup y luego go debe aparecer lo siguiente:





Sorprendentemente, a pesar de su simplicidad, este modelo contiene los elementos más importantes de cualquier modelo basado en agentes. Pero…

3.4 Tres Herramientas Importantes

Antes de mirar de manera más detallada nuestro modelo detengámonos un momento para echar un vistazo a tres herramientas muy importantes de NetLogo:

  • Monitores de agentes
  • el Centro de Comandos y
  • los ticks

3.4.1 Monitor de Agentes

Los monitores de agentes son herramientas para ver y cambiar las variables de un agente (tortuga, parcela o enlace). * Mueva el cursor sobre uno de los buscadores y haga clic derecho. Aparece un panel en el que aprece al final “turtle 0”; mueva el cursor a turtle 0 y seleccione “inspect turtle 0”.





Se abre un Monitor de agente que incluye dos paneles: una vista ampliada de donde se encuentra el agente (turtle 0) y su entorno y una lista de todas las variables del agente:

su posición, color, dirección, etc.





Observe que aparece la variable que definimos a los agentes buscadores (time-since-last-found) (Cada panel se puede cerrar y se vuelve a abrir haciendo clic en el pequeño triángulo negro en su esquina superior izquierda). Sin cerrar esta ventana, puede reiniciar el modelo haciendo clic en go y observa cómo cambian las variables del agente, también puede cambiar sus valores siempre que lo desee, simplemente ingresando un nuevo valor en el monitor.

  • Detenga el programa y cambie el tamaño de la tortuga a 5, y su tiempo desde la última vez que se encontró a −99. (Sus cambios se activan cuando presiona la tecla Enter o mueve el cursor fuera del cuadro de diálogo donde se ingresan los valores). Hay más cosas que puede hacer con los monitores de agentes, incluido dar comandos directamente al agente seleccionado escribiendo los mismos tipos de declaraciones de NetLogo que usaría en su código. Lea la sección Monitores de agentes de la Guía de interfaz del Manual del usuario.

3.4.2 Centro de Comandos

El Centro de Comandos aparece en la parte inferior de la pestaña Interfaz. Aquí se pueden colocar comandos para el observador o para todos los parcelas, tortugas(agentes) o enlaces. Lea la sección del Centro de comandos del Manual del usuario y pruebe algunos comandos, como decirle a las parcelas que cambien su color a azul, el Centro de Comandos no parece útil al principio, pero a medida que se convierta en un mejor modelador basado en agentes con NetLogo, encontrará estas herramientas extremadamente útiles. Como ejemplo divertido, use el Centro de comando para hacer lo siguiente:

  • Después de configurar el modelo y dejar que se ejecute por un segundo o dos,parelo. Haga clic en el texto “observador>” en el Centro de Comandos. De la lista que aparece seleccione “tortugas>” para que ahora pueda emitir un comando a todas las tortugas. En la ventana adyacente, ingrese “hatch 1 [right 160]”, que le dice a cada buscador que cree un segundo buscador, que luego gira 160 grados:





► Ejecute el programa y vea cómo los cuatro cazadores buscan parcelas rojas. Usted puede repetir el comando para crear aún más cazadores: simplemente coloque el cursor en la línea de comando y presione la flecha hacia arriba para recuperar el comando anterior, luego teclee enter

► Después de crear más buscadores , haga que el Centro de Comando le diga cuántos buscadores hay Seleccione observador> para enviar comandos e ingrese “show count turtles” Hasta ahora, nuestro modelo no maneja el tiempo explícitamente: no hacemos un seguimiento de cuántas veces se ejecuta el procedimiento, por lo que no podemos determinar cuánto tiempo ha transcurrido si por ejemplo, que cada vez que los buscadores de hongos se mueven representa un minuto.Para modelar el tiempo, hay que usar la instrucción tick cada vez que se ejecuta el procedimiento go. (Lea en la guía de programación la sección contador de ticks (tick counter)) y se dará cuenta que:

► Al final del procedimiento setup, se debe insertar una línea con la instrucción reset-ticks.Al comienzo del procedimiento go, inserte una línea con la instrucción tick

Si ahora hace clic en setup y luego en go va, puede observar el contador de ticks en la parte superior de la Vista; este muestra cuántas veces se ha ejecutado el procedimiento go. Finalmente, ¿no sería útil ver el camino de cada buscador?:

  • En el procedimiento setup, agregue la instrucción pen-down, luego de la instrucción create-turtles.

UUUfff Listo!!!!! El modelo completo de buscador de hongos es el siguente:

globals [
  num-clusters
]

turtles-own [
  time-since-last-found
  ]

to setup
  clear-all
  ask n-of 4 patches [
    ask n-of 20 patches in-radius 5 [
      set pcolor red
    ]
  ]
 create-turtles 2 [
   pen-down
   set size 2
   set color yellow
   set time-since-last-found 999
  ]
  reset-ticks
end
 
to go
  ask turtles [search]
  tick
end

to search
  ifelse time-since-last-found <= 20
 [right (random 181) - 90]
 [right (random 21) - 10]
 forward 1
  
 ifelse pcolor = red [
   set time-since-last-found 0
   set pcolor yellow
   ][
   set time-since-last-found time-since-last-found + 1
   ]
end

Puede ensayarlo en el siguiente applet: