Introducción a la Complejidad: Tarea 1, Avanzada Este es un tutorial que explicará la opción avanzada de la tarea Por favor abran el modelo de NetLogo "Multiple Ants. nlogo" que se encuentra en la sección "Course Materials" del website cuando lo abra la interfaz se debe ver asi Ya le hicimos unas cuantas modificaciones en las primeras secciones de la tarea y no lo hemos eliminado. Lo primero que quiero hacer es recolorear las hormigas para que siempre se vean rojas Para eso eliminaré estas dos líneas de código eso lo hará menos confuso... Vuelvo a la Interfaz La tarea nos pide crear el rastro de feromonas que dejan las hormigas para que otras lo sigan, una vez que encuentran comida, y ver si así el proceso es mas rápido que en el caso actual. Hagamos eso, vamos a la sección de código Primero creemos una variable patch y llamemosla "pheromone" Lo hago aquí Siguiente, bajamos al setup necesitamos hacer el setup de los patches, para tener también feromonas cambiamos set-up-nest a set-up-patches le pedimos a patches que inicialice "pheromone" en 0 entonces: set pheromone 0 y revisamos... ahora, queremos que las hormigas dejen un rastro de feromonas luego de que comen y se comienzan a devolver al nido y luego queremos que las otras hormigas sigan ese rastro. Para hacer esto me voy a nuestro procedimiento return-to-nest que escribimos antes y añadimos una linea para fijar el nivel de feromonas del patch entonces "set pheromone pheromone + 1" (nivel actual de feromonas + 1) y luego para visualizar cuantas feromonas hay en cada patch voy a ponerle una etiqueta: set plabel pheromone, el valor numérico de feromonas también podría usar otro color para esto si quisiera pero creo que es interesante usar esta etiqueta entonces, revisamos a ver si funciona... Parece que sí. Parece que las hormigas están recolectando comida y devolviéndola al nido y dejando un rastro de feromonas mientras lo hacen el cual aumenta numéricamente Ahora, queremos que la feromona se evapore en el tiempo nos devolvemos al código para hacer eso. Entonces creamos una nueva línea en el procedimiento go la llamaremos evaporate-pheromone Ahora escribamos ese procedimiento "to evaporate-pheromone" queremos que la feromona tenga una probabilidad de evaporarse o sea, un número entre 0 y 1 entonces creemos una variable temporal y la llamamos x que será un decimal aleatorio entre 0 y 1 "let x random-float 1" y luego "ask patches with [peromone > 0]" (con feromona mayor que cero) entonces cualquier patch que tenga feromonas. si x es menor que la probabilidad que decidamos, que será una barra que pondremos en la interfaz y llamaremos a esa barra "probabilidad de evaporación" entonces "probability-to-evaporate" entonces, haremos que la feromona sea su valor actual y, digamos, -1 para que la feromona se evapore gradualmente. y queremos verlo, así que volvemos a poner la plabel. Y tenemos que agregar esa barra que mencioné para hacer eso, vaya a la interfaz a este botón, y elija "slider" y lo pondremos acá un segundo, y lo llamaremos probability-to-evaporate y será un número entre 0 y 1 con incrementos de .01 Y que inicialmente sea .1 ...me faltó una e... presiono ok Y quiero mover esta barra para que este debajo de las otras voy a mover esta ventana de gráfico para abajo y alinearla con el limite del Mundo para que se vea bonito y luego muevo la barra para acá y la hago del mismo ancho que las otras barras entonces... podemos estar listos reviso... de nuevo a la interfaz corramoslo... y los niveles de feromonas deberían decrecer parece que los están haciendo eso es bueno... Ahora, el problema final es que las otras hormigas sigan el rastro de feromonas hagamos eso a continuación. Por cierto, la manera de elegir distintas ventanas en la iterfaz es clickear un espacio vacío en la interfaz y arrastrar sobre la barra o lo que sea y también se puede hacer click derecho luego de elegir el botón para editarlo de distintas maneras. Ahora vamos al código y cambiar la manera en que se mueven las hormigas en su mundo vamos a to look-for-food y vamos a agregar un poco de código aquí vamos a poner unas variables nuevas digamos, let pheromone-ahead? scent-at-angle 0 y ya casi explico lo que eso significa let pheromone-right? scent-at-angle 45 y... let pheromone-left? scent-at-angle -45 este código es muy similar al modelo de hormigas de Net Logo en la libreria de modelos básicamente estamos pidiendo a cada hormiga que vea hacia adelante, y un poquito a la derecha y otro poquito a la izquierda para que determine si hay feromonas en esas direcciones y si hay, que las siga... y sino que camine aleatoriamente que es este código que mantendremos igual luego haremos una serie de declaraciones ifelse ifelse pheromone-right (a la derecha) es mayor que pheromone-ahead (adelante) o pheromone-left (izquierda) es mayor que pheromone-ahead ifelse pheromone-right es mayor que pheromone-left, vamos a movernos a la derecha 45. Sino... a la izquierda 45. y si ninguna es true, quiere decir que hay feromonas hacia adelante o no hay feromonas entonces.. if pheromone-ahead? = 0 en ese caso seguimos con este procedimiento... un bracket ahi y cierro el bracket. Revisamos.... y nos dice que no hay nada llamado scent-at-angle es cierto, no lo hemos escrito aun bajemos al código y lo reportamos to-report scent-at-angle y luego le meteremos un ángulo hagamos que p sea el patch-right-and-ahead estas son primitivas de NetLogo si quieren revisar lo que significa una primitiva pueden seleccionarla y luego darle click derecho / quick help y esto les da una pequeña sinopsis sobre lo que es. entonces usamos los ángulos que le metimos y luego la distancia hacia adelante, que es 1 si no hay feromonas, entonces report 0 y sino, reporte el nivel de feromonas "report [pheromones] of p" y eso sería... Ok, revisamos el codigo No hay bracket que cierre este bracket entonces... se me olvido poner un bracket para cerrar acá y también veo que faltan un par de brackets para estas lineas, lo agrego... reviso, todo bien... De vuelta a la Interfaz.... y... parece que el comportamiento es bastante bueno podríamos analizarlo un poco más... y hacer algunas mejores observaciones sobre como está funcionando pero dejaré que eso lo hagan ustedes.... Noto que muchas hormigas están recolectando en los bordes del mundo visible y podemos arreglar esto yendo a settings y clickeando en "World wraps horizontally" y "World wraps vertically" y Ok... Ahora parece que las hormigas son muy rápidas en comerse la comida en 73 ticks, antes de las feromonas duraban como 128 ticks Eso fue la tarea número 1, espero que hayan disfrutado el tutorial. Nos vemos la próxima!