1.9 Nuestro segundo modelo en Netlogo Construyamos nuestro segundo modelo, en base al primero Lo primero que haremos es hacer una copia de él, ant.nlogo Hacemos click derecho sobre el ícono de Netlogo clickeamos sobre "copiar" o hacemos ctrl + v, lo que haya en tu sistema operativo para copiar Haz una copia de ellos, voy a renombrarlos como ant2. nlogo. Ahora hago doble click para abrirlo y lo etiquetamos. Haciendo click derecho sobre esta etiqueta menú "edit" y llamándolo hormigas 2 Tenemos una hormiga que puede moverse por ahí, démosle ahora algo para comer. Vamos al código y hagamos crecer algo de comida para la hormiga Entonces en el procedimiento "setup" escribiremos "grow-food" (crece comida) bien, pero ahora tenemos que decirle al sistema cómo hacer crecer esa comida ponemos aquí un nuevo procedimiento "to grow-food" y lo que vamos a hacer es "ask patches set pcolor green" y luego "end" Déjenme explicarles sobre los "patches" (área). Volvemos a la interfaz y pueden ver el mundo que es esta área negra, podemos hacer click derecho "edit" y observen que nos muestra las coordenadas del sistema del mundo, probablemente sea difícil de verlo en la pantalla pero lo pueden hacer en Netlogo y verlo en directo donde las coordenadas 0 - 0 están en el medio y aquí vamos desde menos 16 hacia 16, en la vertical y desde menos 16 hacia 16 en la horizontal y así toda la caja es una grilla de 33 por 33 celdas que son llamadas "patches" (áreas) y aquí tenemos el número de pixels por área aquí hay 13 y así sucesivamente. Entonces cada área tiene sus propias propiedades como el color. Si vuelvo al código y les digo a todas las áreas que asignen su color, pcolor es el color del área, a verde. Veamos pues qué sucede cuando clickeo en "setup", de hecho, todo se tornó verde. Podemos ver entonces a la hormiga viviendo en un mundo de pasto. Volvamos a la pestaña del código y escribamos un código para que la hormiga coma el pasto Vamos a escribir lo siguiente justo aquí. "if pcolor = green", voy a poner un comentario aquí, si la tortuga está posicionada sobre un área verde, Esto es decirle a la tortuga que mire a las áreas y si se encuentra sobre un área en particular y si el área es verde, entonces esto es lo que tiene que hacer: va a comer el pasto y asignamos el color nuevamente a negro Así "set pcolor black" y luego mantenemos un registro de cuanta comida consumió entonces vamos a asignar la comida consumida como comida consumida más uno. Y ahora vamos a hacer una cosa más que es tener, en su cuerpo, una etiqueta que nos diga cuánta comida comió. Así, "set label food-eaten" Esto es todo lo que le vamos a decir a la tortuga que realice. Aquí me doy cuenta que tengo que poner este paréntesis, justo aquí Ahora voy a indentar (con la tecla tab), a donde debería ir. Ahora tengo estos dos paréntesis este y este, envolviendo a todos los comandos que usamos para decirle a la tortuga que haga algo Le decimos que gire a la izquierda, que vaya hacia adelante, que mire el área y si el color es verde, asigne el color a negro, incremente la cantidad de comida consumida en uno, y la etiquetamos para saber cuánta comida comió la hormiga. Ahora sólo queda una cosa por hacer, que es asignar la comida consumida Las tortugas tienen algunas clases de variables asociadas con ellas, llamada food-eaten, Uno puede pensar que es el estómago de la tortuga, tenemos registro de cuanta comida se consumió, la tortuga no digiere nada en este modelo. Para hacer eso voy a escribir: "turtles own [food-eaten]" y esto lo que es, es una variable llamada food-eaten, específica de cada tortuga, cada tortuga tiene su propia variable food-eaten, así cada tortuga puede tener una cantidad diferente de food-eaten Aquí arriba en "se up" voy a asignarla a 0 set food-eaten 0 Nos aseguramos de que comience en 0 y a medida que la hormiga come, va acumulando la comida. Probemos esto, se ve bien, volvemos a la interfaz, lo hacemos un poco más lento así podemos ver a la tortuga comiendo. La tortuga, perdón, la hormiga anda a través del mundo moviéndose alrededor, cada vez se mueve a través del mundo, se posiciona en un área verde y come la comida que hay allí. Recuerda que se mueve entre 0 y 3 pasos cada vuelta y come la comida luego de cumplir con los pasos La vemos corriendo alrededor podemos acelerarlo un poco y podemos ver a la hormiga dando vueltas y comiendo toda la comida Probablemente no puedas verlo en esta pantalla pero la hormiga tiene una etiqueta que muestra cuanta comida viene comiendo es mucha comida para una sola hormiga pequeña y la próxima cosa a hacer es darle a nuestra hormiga una colonia Agreguemos entonces más hormigas La forma de hacerlo es agregar una población y esto nos permitirá usar nuestro modelo para asignar la medida de esta población Por lo tanto voy a arriba, al menú de la interfaz y hago click sobre "slider" Voy a poner un "slider" voy a llamar a la variable global "population", voy a poner la mínima de población en 1 y la máxima, digamos, 200 podemos permitir que el usuario la incremente de 1 en 1 y el valor inicial será de 50, suena bien hacemos click sobre "Apply", luego "Ok", Movamos esto, selecciono, "move", arriba Ahora le tenemos que decir al código qué debe hacer esta variable de población Vamos entonces al panel del código y en vez de "create turtles 1" voy a poner "create-turtles population" así el usuario puede asignar el número de la población y así el código creará esa cantidad de tortugas Veamos entonces que pasa cuando hacemos click en "setup" Tenemos todas nuestras hormigas justo en el medio hay 50 de ellas Dejemos que arranquen podemos verlas moviéndose todas haciendo las mismas cosas aunque algunas de ellas realizan algunas elecciones al azar Se puede ver como algunas actúan en forma diferente y si aceleramos, podemos verlas como verdaderas hormigas, moviéndose comiendo comida. Probemos incrementando la población 130 parece ser un buen número de hormigas ¡Ahora realmente hay una multitud! Hay mucha población, creo que debería ir al código y hacerla un poco más pequeña Asignemos su medida en 1 Veamos qué sucede, "setup" y ahora son más pequeñas no se pueden ver muy bien, pero hay más espacio para cada una de ellas Es muy pequeño para que lo puedan ver en sus pantallas pero cada hormiga tiene una etiqueta que muestra cuanta comida comió Lo que nos gustaría saber es cuánta cantidad de comida comió la colonia Entonces lo que voy a hacer es agregar un "plot", que muestre a lo largo del tiempo cuánta comida fue consumida. Volvemos al menú de la interfaz y elegimos "plot" Ponemos el "plot" aquí, y me pide que rellene con unas cuantas cosas lo voy a llamar "Total Food Eaten", hay que tener cuidado con el mínimo y máximo, llamada eje de las X, "Total Food Eaten" y el eje de las Y es "Time" llamemos al lápiz, el color será negro el lápiz se llamará "total-food-eaten" y voy a dar un comando para el plot aquí le voy a decir que dibuje la suma de la comida consumida por las tortugas, esto es, mire a cada tortuga, mire cuanta comida consumió sumarice y dibuje esa cantidad. Ok, aplicamos, ups, tengo un error, este debería ser el eje de las Y, "Total Food Eaten" y éste debería ser el eje de las X "Time". Ok, seleccionémoslo movámoslo, hagámoslo un poco más alto así lo podemos ver, ok. Y ahora veamos si funciona el "setup", ahí va, podemos ver el plot, vemos como cambia la cantidad y esto muestra cuán rápida es la comida consumida y podemos jugar con la medida de la población y ver cómo afecta. Cuán rápida la comida es consumida. Para terminar nuestro modelo permitamos que el usuario pruebe con otras variables que las hormigas obedecerán. Por ejemplo, pongamos un "slider" que le permita al usuario asignar el máximo de la medida del paso y el ángulo máximo de rotación Voy a seleccionar el "plot" y bajarlo un poco para hacer espacio y poner otros "sliders". Voy aquí, selecciono "slider", llamo a la variable "max-step-size", que su mínimo sea 1, su máximo que sea 10, su valor inicial que sea 4, ok, movemos esto aquí, los dos, estos muchachos para arriba. Agreguemos otro "slider" al que llamaremos "max-turn-angle", damos ok y este será, digamos, un mínimo de 1 grado un máximo de 180. Ok, el valor inicial será de 60, aplicamos, damos ok, lo seleccionamos, lo movemos. Ok ahora tenemos que poner estas variables en el código, así aquí en vez de decir 60, ponemos "max-turn-angle" y lo mismo aquí "max-turn-angle". Ok, tenemos "right random max-turn-angle left random max-turn-angle", seguro notaron, si prestaron atención, que esta instrucción de azar "random" va desde 0 hasta menos 1, max-turn-angle menos 1. Realmente el max-turn-angle es un poco, debería ser el max-turn-angle debería ser éste menos 1, pero no voy a insistir mucho en eso. Ok, aquí tenemos la misma cosa en vez de 4, voy a decir max-step-size. Entonces probemos este código. Por cierto, me doy cuenta que este código puede ser difícil de ver. Voy a subirlo a la página junto a los materiales del curso, se llama "ant2.nlogo" y así podrán bajarlo y pegarle una mirada. Será utilizado durante la tarea para el hogar. Ok, ahora veamos si esto funciona, parece que funciona. Otra cosa que puede ser de ayuda sobre netlogo es que a veces netlogo se cuelga, aún si se hace click en el botón"go", no se apaga porque está ejecutando muchos comandos. En el menú herrmientas "tools" hay un comando "halt", que se puede usar para frenar el programa ya que siempre funciona para frenarlo. Es de ayuda en caso de que por alguna razón, el programa se cuelgue y no se puede presionar el botón"go". Ok, hagamos un experimento, incrementemos el max-step-size a 10, y veamos qué sucede. Ahora, parece que las hormigas quedan atrapadas en los bordes y se puede jugar con los diferentes, con estas tres diferentes variables y ver cuánto tiempo tardan en comerse toda la comida. Nos gustaría frenar cuando toda la comida haya sido consumida, para que podamos ver exactamente cuántos "ticks" les tomó comerse toda la comida. Entonces voy a colocar un comando para hacerlo, voy al código. Aquí está el comando que usaremos para frenar la corrida. Si no hay ningún área con color igual a verde (todo se volvió negro), entonces haremos esto: frenarlo. Esto es un tipo de sintaxis que se usa en netlogo, se puede negar, se puede preguntar por cualquier área con alguna propiedad y frenarlo. Probemos todo ahora, asignemos la población a 200 y el max-step-size a 4, el max-angle-turn a 60 y veamos cuán rápido estas hormigas pueden comer toda la comida. Lo hicieron en sólo en 105 ticks. Ahora salvamos nuestro modelo, yendo al menú de archivo y haciendo click sobre "save" y así terminamos nuestro segundo modelo