Ahora que hemos visto como funciona NetLogo, vamos a construir un modelo sencillo.
El modelo consistirá en una hormiga que se moverá aleatoriamente. Y eso será todo.
Vamos a iniciar NetLogo haciendo click en el ícono de la versión 5.0.3 o en cualquier otra versión que tengas.
La primer cosa que haré es crear los botones de "Inicio" y "Avance".
Así que iré a la parte del menú donde dice "Botón".
Este es, en realidad, el menú de construcción de la interfaz
porque al hacer click puedo ver todos los tipos de objetos que pueden ser agregados a la interfaz.
Así que voy a agregar un botón y voy a escribir que este botón será para "Inicio".
Y después agrego otro botón para "Avance".
Ahora puedo seleccionar el botón haciendo click derecho y después en seleccionar
puedo moverlo, cambiar su tamaño arrastrádolo por aquí... y así se puede acomodarlos al gusto.
Ya tenemos los botones de "Inicio" y "Avance", pero están rojos porque no tienen ningún código asociado a ellos.
No hacen nada todavía al hacer click en ellos.
Ahora vamos a crear el código que va a ir asociado a los botones.
Para lograrlo iremos a la pestaña "Código" y escribimos en los "Procedimientos".
El primero será el de inicio, así que escribimos " to setup",
despues escribimos "clear-all"
"clear-all" es un comando que elimina todo lo que se encuentra en el mundo, que es el espacio donde se ven todas las acciones.
Limpia la ventana y todos los remanentes de corridas anteriores.
vamos a reiniciar los ticks (reset-ticks) que son los intervalos de tiempo, a 0.
Ahora vamos a crear una hormiga
Notarás que todos los agentes en NetLogo se llaman "tortugas".
Esto es por razones históricas que se originan en "Logo" el predecesor de NetLogo.
En Logo sólo existía una tortuga, mientras que NetLogo permite varias.
Con "create-turtle" podemos elegir cuantas tortugas vamos a crear. Que en este caso será solo una.
Y le vamos a pedir que haga algunas cosas. Así que escribimos: "ask-turttle"
y hacemos una lista de las cosas que queremos que haga, empezando con corchetes
"set shape "bug"" asigna forma de insecto a las tortugas hormigas.
"set size 3" 3 es un buen tamaño para visualizar las tortugas.
"set color red" para cambier el color a rojo y eso es todo lo que le pediremos que haga así que cerramos el corchete y escribimos "end".
Para revisar la gramática hacemos click en "comprobar" y nos indica que hay un error.
Me indica donde se encuentra el problema, y noto que debería decir "ask turtles"
me faltó una "s" y la razón es que NetLogo asume que existe una población de agentes, y este comando asigna acciones a todos ellos.
Presiono "Comprobar" nuevamente y parece que todo funciona bien.
Así que hacemos click en el botón "Inicio" y vemos a la hormiga justo al centro.
El botón "Avance" aún está rojo, lo que significa que aún no hemos escrito su código.
Ahora creamos el procedimiento de "Avance", regresamos a la pestaña de "Código" y escribimos "to go"
le vamos a pedir a las hormigas que giren sus cuerpos a la derecha, 30 grados
y luego que avancen hacia adelante 4 unidades pasos
e incrementamos al siguiente intervalo de tiempo, eso hace el comando "tick"
por último "end" para terminar.
Lo comprobamos, todo parece estar bien, vayamos a la interfaz
Presionamos "Avance" y podemos ver que la tortuga se movió un poco, giró su cuerpo 30 grados y avanzó 4 pasos
podemos presionar el botón repetidamente y avanza en círculos
me gustaría tener un botón que avance indefinidamente, sin tener que presionar el botón muchas veces
y lo puedo lograr haciendo click derecho en el botón "Avance", luego editar y seleccionar la casilla "Continuamente".
con esto avanzará por siempre. Así que vamos a hacerlo y si reduzco la velocidad puedo ver como avanza en círculos.
Presiono el botón "Avance" para detenerlo.
Puedo presionarlo nuevamente para continuar el avance y detenerlo.
O, si quiero empezar de cero, presiono el botón "Inicio".
Al presionar "Inicio" varias veces, vemos que siempre inicia al centro, pero con diferentes orientaciones.
Eso es porque lo que hace el botón "Inicio" es colocar la hormiga justo al centro con una orientación aleatoria.
Ahora podemos guardar lo que llevamos haciendo click en el menú "archivo" y seleccionamos "guardar como".
Lo voy a guardar como "hormiga1". Y lo vemos aparecer el ícono en el escritorio.
Ahora en el menú de NetLogo hago click en cerrar. El programa se cierra y lo puedo abrir nuevamente haciendo doble click en el archivo que he creado.
Hay algo que está mal con el modelo. Y es que es muy aburrido.
Lo único que hace es girar en círculos.
Vamos a hacerlo más interesante. Y lo voy a hacer modificando el código y añadiendo un simple comando.
En lugar de que gire a la derecha 30°, vamos a añadir la palabra random.
Ahora la hormiga elegirá un número aleatorio entre 0 y 30 menos 1. Eso es lo que random 30 hace.
Y girará esa cantidad de grados. Cada vez que pase por ahí elegirá un número diferente.
Y podemos hacer lo mismo con avance. Que avance un número aleatorio de pasos entre 0 y 4 menos uno, es decir entre 0 y 3.
Aún avanza en círculos, pero ahora su comportamiento es más interesante.
Algo que podrás notar es que la hormiga atraviesa la pared en una orilla y reaparece en la orilla opuesta.
De hecho, el mundo, que es el área negra se envuelve en las orillas.
El mundo completo tiene la forma, o lo puedes imaginar como una dona o un toroide.
donde la pared, aunque la vemos plana, se envuelve y toca la orilla de esta otra pared.
así que la hormiga lo atraviesa.
Si la hormiga llega a la orilla superior, aparece en la inferior.
O si llega a un lateral, reaparece por el otro.
Esto lo hace ver extraño.
Lo que puedo hacer es hacer click derecho en el "mundo" que es el área negra y vemos las opciones del sistema de coordenadas.
Editarlo, y desactivar...
Esto nos dá mucha información sobre el sistema de coordenadas, la configuración del mundo.
Y el número de parcelas. El emparrillado en el que está dividido el mundo.
Lo que es interesante para nosotros es que podemos desactivar las casillas que controlan la envoltura vertical y horizontal.
Aplicamos los cambios y vemos que pasa.
Ahora cuando la hormiga llega a la pared se atora y no se puede mover, hasta que consigue darse la vuelta.
Eso la hace ver más real.
Aunque se mueve un poco aleatoriamente, aún no es muy interesante porque siempre gira a la derecha.
Vamos a escribir código que le permita elegir si gira a la derecha o a la izquierda.
Esencialmente va a tirar una moneda para que decida si gira a la derecha o a la izquierda.
Vamos a implementar un procedimiento para que tire la moneda.
El procedimiento regresará falso o verdadero, como si fuera cara o cruz en una moneda.
Usaré algo llamado "to report".
Un procedimiento "report" es diferente a un procedimiento "to" porque regresa un valor.
Lo único que escribimos es report "random 2 = 0". Lo que esto haces es...
"Random 2", si recuerdan. Regresará un valor entre 0 y este número menos uno. Así que regresará 0 la mitad de las veces y 1 la otra mitad.
de manera aleatoria.
Si es 0 reportará verdadero, mientras que si es 1 reportará falso.
Esto reporta si es falso o verdadero.
Así que el procedimiento será verdadero la mitad de las veces y falso la otra mitad.
Usaremos este procedimiento, si coinflip es verdadero realizará lo que está en el primer corchete y si es falso lo que está en el segundo.
Así que si CoinFlip es verdadero girará a la derecha y si CoinFlip es falso girará a la izquierda.
En cada intervalo de tiempo decidirá aleatoriamente si gira a la derecha o a la izquierda.
Veamos como funciona.
Vemos que gira en ambas direcciones... puede atorarse... pero sigue avanzando.
El problema ahora es que se atora muy a menudo.
Podemos modificarlo cambiando el 30 por un 60.
Al tener un mayor radio de giro, girará más cada vez.
Vemos que se atora menos y se ve más real.
Al escribir un programa siempre es bueno colocar comentarios.
Un comentario es cualquier texto que es ignorado por la computadora, pero que ayuda a la gente a entender el programa.
En NetLogo comentarios son cualquier texto que siga una semi coma ";".
Escribo "; regresa falso o verdadero aleatoriamente" que es lo que hace.
Y otro comentario "; si coinflip es verdadero gira a la derecha y si no a la izquierda"
Estos son pequeños recordatorios para nosotros mismos o para que otros sepan que hace el código.
Esto es muy útil en programas más complicados. Especialmente si regresas al código después de un par de dias.
Los comentarios son absolutamente esenciales aunque nadie más lea el programa.
Ahora estamos listos para guardar el modelo.
Primero le pondremos una etiqueta. En el menú elegimos "nota" y escribimos un poco de texto.
Ahora puedo seleccionar esto y moverlo hacia abajo. Y está listo, así que lo guardo.
Quiero mencionar que el propósito de enseñar NetLogo is dar una idea de como funciona.
Vamos a utilizar varios modelos en el curso. No vamos a programar muchos, pero quiero que sepas como funciona el código y la interfaz.
También harás modificaciones a las simulaciones y si estás en un nivel más avanzado o motivado puedes escribir tus propios modelos.
Como tarea para esta unidad quiero que hay un pequeño examen.
Quiero que implementes el mismo modelo que hice "hormiga 1" que yo hice y hazlo funcionar.
No será calificado, pero es para tu beneficio, para que sepas si entendiste todo lo que acabo de mostrar.
Y no dudes en escribir preguntas en el foro, si surge alguna, que para eso está.