Ahora que tenemos nuestro modelo y que es lo que queríamos hacer Quiero usar el modelo para hablar algunas cosas claves de los MBA Antes que nada, hicimos un buen trabajo durante todo el tiempo documentando nuestro código a medida que lo íbamos escribiendo Pero una cosa que seguramente querramos hacer es documentar también en la tab info Voy a la tab info y hago click sobre edit y bajo la etiqueta "Qué es esto?", por ejemplo, podemos decir: "Este es el modelo del juego de Héroes y Cobardes del grupo Fratelli" y después pueden ir y completar todas las otras secciones Una cosa que yo encuentro muy valiosa como codificador o programador es escribir lo que llamamos una descripción de pseudo código de la forma en que trabaja Generalmente yo lo hago en la sección "Cómo funciona?" porque eventualmente puedo incorporarlo ahí Aunque también es posible que querramos salvarlo en un documento separado si no lo queremos incluir en el tab de la info directamente Siempre pongo en el procedimiento de inicialización, cómo va a funcionar y si va a hacer un procedimiento iterativo o de tick Entonces la inicialización es el de "comienzo" y el iterativo es el de "ir" qué es lo que queremos que haga el modelo? y a veces hacemos esto aún antes de crear el modelo en este caso conozco el modelo muy bien así que empiezo ya escribiéndolo queremos crear un grupo de tortugas y tal vez en un trabajo futuro querramos que el número de tortugas pueda ser asignado con un slider en la interfaz esto no lo he hecho en este modelo, pero es algo que pueda querer en el futuro puede que querramos que cada tortuga se mueva a una posición al azar podríamos querer que el condicional esté basado en las personalidades entonces podemos tener un seleccionador llamado PERSONALIDADES que especifica la conducta. Muchas veces en el código de NetLogo, si hablamos de una variable en el pseudocódigo lo escribimos en mayúsculas ponemos el ARRANQUE, el CORRER y el de PERSONALIDADES en mayúsculas y NUMERO, que es nuestro número de tortugas para poder distinguirlos del resto de lo que estamos escribiendo entonces podemos decir: si PERSONALIDADES = "Bravo" entonces la tortuga se vuelve azul y podemos hacer lo mismo para la personalidad cobarde si PERSONALIDADES = "Cobarde" entonces la tortuga se vuelve roja y podemos hacer lo mismo para la opción de mezcla si PERSONALIDADES = "Mezcla" entonces la tortuga se vuelve azul o roja al azar Podemos decirle a cada tortuga que elija un AMIGO y un ENEMIGO y luego volvemos a cero los ticks Esto es como si fuera una descripción en lenguaje natural podemos ir y terminarlo escribiendo la descripción de la rutina "GO" Cada tortuga azul en verdad, me di cuenta que ya lo había hecho y por eso es que es muy importante documentar siempre todo si vemos, cuando lo estaba escribiendo dije que la tortuga era azul si era brava pero en el código puse que la tortuga se volvía azul si era cobarde mejor cambiemos esto y mientras lo estamos haciendo y por esto es que es importante chequear siempre el código cada tortuga que está en azul, se mueve lejos de su enemigo y hacia su amiga y como estas son variables puedo ponerlas en mayúsculas y luego podemos hacer lo mismo cada tortuga que es roja se aleja de su enemigo y va hacia su amiga y esto es todo. Es la descripción en lenguaje natural del modelo y es un pseudocódigo que le puedo mostrar a alguien más y preguntarle qué piensa de este modelo Entonces vemos que es importante documentar documentar el modelo tanto en términos de un documento separado como dentro del código, ya que hace más sencillo decir si nuestro modelo conceptual y el modelo implementado son similares Una de las cosas interesantes que encontré sobre este modelo es que cuando elegimos "mixto" nunca obtenemos el mismo resultado siempre el resultado es diferente Y esto se debe a que NetLogo coloca al azar a todas las tortugas en el mundo Es interesante señalar que las computadoras no posee una noción de azar real, lo que hace en realidad es usar un generador de números aleatorios para crear lo que llamamos números pseudo aleatorios Estos números se generan usando un proceso determinístico especificando una "semilla" aleatoria Lo que hace NetLogo es generar una buena cantidad de semillas aleatorias cada vez que se corre el modelo, y usar esas semillas para decidir que valor va a usar Uno puedo configurar la semilla Les voy a mostrar, si la semilla aleatoria es 188 "random-seed- 188" y lo que hago es pedirle que me muestre 100, "show random 100" un par de veces, lo que hace es generar 3 números aleatorios y si ahora asigno a la semilla aleatoria el mismo valor, 188 Voy a obtener los tres mismos números aleatorias en una vez Esto implica que si veo un patrón de conducta y asigno la semilla aleatoria puedo entonces, recrear el patrón, aún cuando estoy usando, técnicamente, un valor aleatorio. De hecho esto ocurre cuando corro una buena cantidad de MBA en los que asignamos la semilla antes de correrlos para que si algo interesante pasa en el modelo uno puedo volver atrás y mirar los resultados un poco más tarde De hecho, si cargamos el modelo de Héroes y Cobardes que está en la librería de NetLogo Lo buscamos en la sección "IABM textbook" en el capítulo 2 Lo que hemos hecho es utilizar algunas configuraciones predeterminadas y qué es lo que hacen esas configuraciones predeterminadas? bueno, si miramos , observaremos que hay un comando corriendo que se llama "preset" que tiene esta cadena larga, a continuación si miramos el código, lo que hace "preset" es tomar una semilla de número aleatorio y asignar la semilla de número aleatorio a ese valor y de hecho también hay que asignar el número de agentes a un valor específico debido a que si el número de agentes es diferente entonces tenemos un número de llamados diferentes entonces, qué es lo que nos permite hacer todo esto? bueno, cuando hacemos click sobre alguno de estos botones de configuración siempre obtenemos el mismo patrón entonces vamos a hacer click en el patrón "dot" y si lo dejamos correr vemos que, eventualmente, todo confluye en un solo punto Este es un patrón muy común para ver si hacemos click sobre el botón "frozen" y lo dejamos correr llegamos a este estadío que es muy interesante donde vemos a un grupo de tortugas congeladas en el medio del mundo Aquí vemos uno de mis favoritos, el patrón "seductor" que muestra a este grupo seducido, rebotando de borde en borde el patrón "espiral" que crea este efecto en espiral justo en el medio y podemos obtener otros "seductores" o "yo-yo" o el patrón de "bandada deambulatoria" como lo bautizamos y el "generalmente cool que de golpe se frena" nunca le pusimos un nombre a ese patrón Esto muestra tanto un problema como un beneficio del mundo de NetLogo y que es que vamos a poder, en algún sentido, controlar el azar de lo que está ocurriendo pero es algo en lo que hay que pensar, cuando generamos nuestros modelos ya que implica lo que el azar significa Esto fue todo por esta semana, excepto por el resumen que es lo que sigue El examen va a estar en vivo en breve Muchas gracias, estaremos comenzando la unidad 3 donde estaremos hablando de como extender modelos que fueron construidos por otros