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