Manual Español Netlogo PDF

Title Manual Español Netlogo
Course Inteligencia artificial
Institution Universidad Nacional de Ingeniería
Pages 44
File Size 2.1 MB
File Type PDF
Total Downloads 18
Total Views 123

Summary

Manual Netlogo...


Description

Manual de Netlogo en español https://sites.google.com/site/manualnetlogo/home Secciones Introducción al escenario de simulación de Netlogo Vistas en Netlogo (1) Vistas en Netlogo (2) Ejercicio 1. Primitivas básicas en la ventana de comandos. Ejercicio 2. Procedimientos Ejercicio 3. Botones Ejercicio 4. Propiedades de los agentes (1) Ejercicio 5. Propiedades de los agentes (2) Ejercicio 6. Propiedades de los agentes (3) Ejercicio 7. Propiedades de los agentes (4) Ejercicio 8. Variables globales. Variables de entrada. Ejercicio 9. Variables globales y variables locales. Sentencias condicionales if Ejercicio 10. Sentencias ifelse. Procedimientos con retorno (to-report) Ejercicio 11. Propiedades adicionales de los agentes Ejercicio 12. “Razas” (breeds) de agentes Ejercicio 13. Bucles while Ejercicio 14. Representaciones gráficas en Netlogo Ejercicio 15. Listas (1) Ejercicio 16. Listas (2) Ejercicio 17. Operaciones sobre listas Mapa del sitio Manual de Netlogo en español He preparado un manual de Netlogo en español que te permitirá familiarizarte con este lenguaje de programación de una forma muy sencilla, a través de pequeños programas-ejemplo. ¿Qué es Netlogo? ¿Dónde puedo obtener el programa? Netlogo es un entorno de programación que permite la simulación de fenómenos naturales y sociales. Fue creado por Uri Wilensky en 1999 y está en continuo desarrollo por el Center for Connected Learning and Computer-Based Modeling. Netlogo es particularmente útil para modelar sistemas complejos que evolucionan en el tiempo. Los implementadores de modelos pueden dar instrucciones a cientos o miles de agentes para que todos ellos operen de manera independiente, entre sí y con el entorno. Esto hace posible explorar la relación entre el comportamiento a bajo nivel de los individuos y los patrones macroscópicos que surgen a partir de la interacción de muchos individuos entre sí.

1

Netlogo permite a los usuarios abrir simulaciones y “jugar” con ellas, así como explorar su comportamiento bajo una serie de condiciones. Asimismo, permite al usuario la creación de sus propios modelos. Netlogo es lo suficientemente sencillo como para que los estudiantes y los profesores puedan ejecutar las simulaciones o incluso construir las suyas propias. Además, su grado de desarrollo actual es suficiente como para servir como una herramienta potente para investigadores en muchos ámbitos. Existe abundante documentación y tutoriales sobre Netlogo. El programa incluye una galería de modelos (models library), que contiene una amplia colección de simulaciones que pueden ser ejecutadas y modificadas. Este conjunto de modelos pertenece a ámbitos muy diversos, tanto de la naturaleza como de ciencias sociales (biología, medicina, física y química, matemáticas y computación, economía y psicología social). Existen dos maneras de ejecutar Netlogo: 1. Descargando e instalando el programa (permite simular y editar modelos, así como la creación de modelos propios). 2. Ejecutar un applet desde una página web (permite la ejecución de los modelos, pero no editarlos ni crear modelos nuevos). El programa puede descargarse de manera gratuita desde aquí. Para su funcionamiento, requiere tener instalada en el ordenador una máquina virtual de Java (JVM - Java Virtual Machine) versión 1.4.2 o superior. En la versión de descarga para Windows existe la opción de descargar una versión que incluye la JVM necesaria.

Introducción al escenario de simulación de Netlogo Netlogo es un lenguaje de programación que sigue la filosofía del modelado basado en agentes. Concretamente, en Netlogo existen 3 tipos de agentes: - Turtles (tortugas). - Patches (celdas). - Links (relaciones entre tortugas). - Observer (observador).

2

Las tortugas son los agentes que se mueven por el mundo. Interaccionan entre sí y con el medio. Cada tortuga viene identificada por un identificador que es único para cada tortuga. Netlogo denomina “mundo” (world) al terreno en el que se mueven las tortugas. Cada porción cuadrada de mundo se denomina patch. Cada patch está identificado por las coordenadas de su punto central. Las tortugas se mueven por el mundo (y, por tanto, por encima de los patches). Las tortugas interaccionan entre sí según unas reglas de comportamiento y con el medio (es decir, con los patches). Se pueden modelar la relación entre distintas tortugas mediante links, que es el tercer tipo de agente presente en Netlogo. Los links se designan mediante un par (tortuga1, tortuga2), que indica las dos tortugas relacionadas mediante dicho link. Finalmente, la última figura presente en los modelos de Netlogo es el observador. Éste no está representado en el mundo, pero puede interactuar con él (crea y destruye agentes, asigna propiedades a los agentes, etc).

Vistas en Netlogo (1) Cuando arranquemos Netlogo, la pantalla de nuestro ordenador presentará el siguiente aspecto:

En la parte superior observamos tres pestañas: interface (interfaz), information (información) y procedures (procedimientos).

3

Aunque lo veremos con mayor detenimiento próximamente, en la primera de las pestañas (interface) será donde se represente nuestro modelo. En la segunda pestaña (information) podremos añadir información sobre nuestro modelo para informar a los usuarios:

y en la última pestaña (procedures) escribiremos los procedimientos que se encargarán de llevar a cabo la ejecución de nuestro modelo:

Para más detalles, puedes consultar: Vistas en Netlogo (2).

4

Vistas en Netlogo (2) 1. INTERFAZ (interface) Dentro de la pestaña interfaz, distinguimos los siguientes elementos

El “mundo” es el lugar donde se visualiza el comportamiento de los agentes que creamos en nuestro modelo. Está compuesto por una serie de patches o celdas. Se puede elegir el tamaño de cada celda y el número de celdas que hay en el mundo pulsando el botón “settings”:

1.1. MODEL SETTINGS (AJUSTES DEL MODELO)

5

TAMAÑO DEL MUNDO El tamaño del mundo queda definido por las variables max-pxcor y max-pycor, que representan la coordenadas centrales de las celdas más alejadas del origen. ¿Cómo sabemos entonces cuántas celdas tiene nuestro modelo de ancho? Por defecto, max-pxcor tiene el valor 16 y el posición del mundo es centrada. Esto quiere decir que tenemos 16 celdas a la derecha del origen de coordenadas, y 16 celdas a la izquierda del mismo. A esto hay que añadirle la celda que está justo en el origen de coordenadas, por lo que el mundo tendrá 2 · 16 + 1 = 33 celdas de ancho. Si max-pycor tiene el valor 16 como en la figura, de manera análoga, el mundo tendrá 33 celdas de altura. En conclusión, el mundo tendra unas dimensiones de 33x33 celdas. Se cumple que las variables de Netlogo world-width y world-height, que almacenan la anchura y la altura del "mundo", cumplen las siguientes propiedades: world-width = 2 * max-pxcor + 1 ;; anchura del mundo world-height = 2 * max-pycor + 1;; altura del mundo Además, se cumple que el tamaño del mundo (en número de celdas) será igual al producto de las variables world-width y world-height. Puedes comprobarlo escribiendo lo siguiente en el centro de comandos: show world-width ;; muestra la anchura del mundo (por defecto 33 celdas) 6

show world-height ;; muestra la altura del mundo (por defecto 33 celdas) show count patches ;; cuenta el número de patches (celdas) y las muestra por pantalla (por defecto 1.089)

FRONTERAS DEL MUNDO Si la opción “world wraps horizontally” está activada, cuando una tortuga, al desplazarse, traspasa el límite del mundo, aparecerá por el lado opuesto del mundo. Si no está activada, no se permite que las tortugas avancen más allá de los límites del mundo, por lo que si esto ocurriera, recibiríamos un mensaje de error al ejecutar nuestro modelo. Lo mismo es aplicable para la opción “world wraps vertically” en lo referente a los desplazamientos en vertical.

TAMAÑO DE LAS CELDAS (PATCHES) Lo definimos en la ventana “patch size”, medido en pixels. Ten en cuenta que la anchura “visual” del mundo (es decir, el tamaño que va a tener el mundo en nuestra pantalla) dependerá tanto de la variable “patch size” como de max-pxcor y max-pycor: Cuanto mayor sea max-pxcor, más celdas tendremos en el eje x, y cuanto mayor sea el tamaño de cada celda, mayor será por tanto el tamaño visual del mundo. TAMAÑO DE LAS ETIQUETAS DE LOS AGENTES Lo introducimos en la ventana “font size of labels on agents”. FORMA DE LAS TORTUGAS Si la opción “turtle shapes” está desactivada, las tortugas se muestran como cuadrados. En cambio, si están activadas, podemos darles la forma que deseemos (en la barra de menús, elegir tools y a continuación turtle shapes editor para ver las formas de tortuga disponibles). TICK COUNTER (CONTADOR DEL NÚMERO DE VECES QUE SE REPITE UNA SIMULACIÓN) Para que este contador se incremente, debemos añadir la palabra “tick” dentro de nuestro código. Cuando la ejecución del programa pase por la palabra tick, este contador se incrementará en una unidad. 1.2. PANEL DE CONTROL DE LA SIMULACIÓN VELOCIDAD DE SIMULACIÓN: Por defecto aparece velocidad “normal”. Puede variarse desplazando la barra hacia la derecha (más deprisa) o hacia la izquierda (más despacio). Ten en cuenta que, de hecho, el ordenador procesa los datos a la misma velocidad independientemente de lo 7

elegido en esta barra, pues en realidad lo que se altera es la velocidad con la que estos datos se muestran en la pantalla. VIEW UPDATES (CONTINUOUS / ON TICKS): Si esta casilla está activada, los cambios en el modelo se nos mostrarán “paso a paso”. En cambio, si está desactivada, el mundo sólo se actualizará al finalizar la simulación. Si se selecciona “continuous”, el mundo, variables y gráficas que se presentan en pantalla se actualizan paso a paso. En cambio, si se selecciona “on ticks”, la pantalla se actualiza al finalizar cada iteración (cada vez que aparezca la palabra tick en la ejecución del programa). 1.3. ADICIÓN DE ELEMENTOS DE CONTROL DE LA SIMULACIÓN Se pueden incorporar a la interfaz:         

BUTTON (botón). Al pulsarlo, se ejecutan una serie de comandos. SLIDER (barra desplazadora). Controla el valor de una variable global. Permite acotar los valores de esta variable dentro de un rango, así como asignarle un valor por defecto. SWITCH (interruptor). Controla el valor de una variable global booleana. Si está seleccionado “on” la variable tomará el valor true. En caso contrario, tomará el valor false. CHOOSER (selector). Controla el valor de una variable global. A diferencia de la barra desplazadora (slider), los valores que podrá tomar esta variable serán discretos. INPUT (entrada). Controla el valor de una variable global. El usuario teclea dicho valor. MONITOR: Muestra el valor que toma una variable global durante la ejecución del programa. PLOT (gráfico): Representación gráfica. OUTPUT: (salida). Se trata de una pantalla en la que podemos mostrar mensajes a lo largo de la ejecución. Sólo se permite añadir un output por modelo. NOTE (nota). Texto.

2. INFORMATION (información) Muestra información sobre el modelo: qué es, cómo funciona, aspectos que observar, cuestionar que probar, modelos relacionados, etc. Todo ello puede modificarse al pulsar el botón “edit”.

8

3. PROCEDURES (procedimientos) En esta vista se escriben los procedimientos (“funciones”) necesarios para programar nuestro modelo. Volveremos sobre ello en el Ejercicio 2.

Ejercicio 1. Primitivas básicas en la ventana de comandos.

clear-all ;; (equivalente: ca) reseteamos todas las variables, limpiamos el mundo, etc. crt 5 ;; (equivalente: create-turtles 5) creamos 5 tortugas. ask turtles [fd 10] ;; pedimos a todas las tortugas que avancen 10 unidades. 9

A continuación, teclea lo siguiente en la línea de comandos: clear-all ;; (equivalente: ca) crt 1 ;; creamos 1 tortuga ask turtles [fd 5 rt 90 fd 5 rt 90 fd 5 rt 90 fd 5] Como podrás deducir, lo que hemos pedido a la tortuga es que dibuje un cuadrado de lado 5 unidades (literalmente, lo que le hemos pedido a la tortuga es lo siguiente: avanza 5 unidades, gira 90 grados a la derecha, avanza 5 unidades, gira 90 grados a la derecha, avanza 5 unidades, gira 90 grados a la derecha, avanza 5 unidades). Sin embargo, te habrás dado cuenta de que parece que la tortuga no ha variado su posición. Reduce la velocidad de la simulación en la barra desplazadora en la parte superior de la pantalla, desplazándola hacia la izquierda. Verás que debajo pondrá “slower” en lugar de “normal speed”. A continuación reintroduce la misma secuencia de comandos. Verás que la tortuga está dibujando un cuadrado. Supón que estamos interesados en que la tortuga dibuje un cuadrado (es decir, no sólo que haga un desplazamiento en forma de cuadrado como en el ejemplo anterior, sino que deje una huella según se va moviendo, de forma que quede dibujado un cuadrado. Para ello, introduciremos la primitiva pd (pen-down) justo antes de pedir a la tortuga que se mueva. De esta forma, la tortuga dejará una marca cada vez que se desplace. Cuando termine de dibujar el cuadrado, emplearemos la primitiva pu (pen-up) para que no deje huella en los movimientos sucesivos. Prueba lo siguiente: clear-all ;; (equivalente: ca) crt 1 ;; creamos 1 tortuga ask turtles [pd fd 5 rt 90 fd 5 rt 90 fd 5 rt 90 fd 5 pu] Verás que la tortuga ha dibujado un cuadrado:

Para finalizar este ejercicio, introduciremos la primitiva repeat (repetir). En el ejemplo anterior, pedíamos a la tortuga que avanzara 5 posiciones y girara 90º a la derecha cuatro veces (una por cada 10

lado del cuadrado). Esta orden se puede compactar haciendo uso de la primitiva repeat. Compruébalo escribiendo lo siguiente en la línea de comandos: clear-all ;; (equivalente: ca) crt 1 ;; creamos 1 tortuga ask turtles [pd repeat 4 [fd 5 rt 90] pu] Observarás que el resultado es el mismo que en el ejemplo anterior.

Ejercicio 2. Procedimientos Un procedimiento en un nuevo comando definido por el programador que engloba un conjunto de comandos de Netlogo (esto es análogo al concepto de función en otros lenguajes de programación). A continuación crearemos un nuevo procedimiento llamado “comenzar”. Dicho procedimiento englobará los comandos que utilizamos en el ejercicio anterior, es decir, creará una tortuga, y ésta dibujará un cuadrado. Seleccionamos la pestaña “procedures” en la pantalla de Netlogo y escribimos lo siguiente: to comenzar ;; definimos el nombre del procedimiento ca ;; clear-all crt 1 ;; creamos una tortuga ask turtles [pd repeat 4 [fd 5 rt 90] pu] ;; dibujamos el cuadrado end ;; fin del procedimiento Observa que para iniciar la definición de un proceso utilizamos la palabra “to” seguida del nombre que queramos dar al procedimiento. Después introducimos el conjunto de comandos que componen la primitiva y finalmente cerramos la definición del procedimiento con la palabra “end”. Para ejecutar el comando, debes ir a la pestaña “interface”, y, en la línea de comandos, teclear el nombre del procedimiento que acabas de crear (comenzar). Pulsa enter y observa lo que ocurre.

Ejercicio 3. Botones El objetivo de este ejercicio es crear un botón para que al pulsarlo se ejecute el procedimiento creado en el ejercicio anterior. Compruébalo aquí:

11

En la pestaña interface, en el menú desplegable de la parte superior de la pantalla, elegimos “button”. A continuación hacemos clic en el punto de la pantalla en el que deseemos colocar el botón. En el campo de comandos (commands) escribimos los comandos que queremos que se ejecutan al presionar el botón (en este caso escribiremos “comenzar”, sin comillas, para que se ejecute el procedimiento que acabamos de crear). Opcionalmente, en el campo “display name” puede escribirse el nombre que queremos que se muestre sobre el botón. También podemos asignar al botón una tecla del teclado para no tener que utilizar el ratón. Para ello, introduce la tecla deseada en el campo “ action key”. La pantalla debería mostrar un aspecto semejante al que se muestra a continuación:

Marcar la casilla "Forever" provocará que el procedimiento "comenzar" se repitiera una y otra vez, hasta que pulsáramos de nuevo el botón COMENZAR, momento en el que el programa terminará. En cambio, si dejamos esta casilla sin marcar, cada vez que pulsemos el botón COMENZAR, se llamará al procedimiento "comenzar" una sola vez, por lo que se dibujará el cuadrado una sola vez y el programa terminará. Esto es útil para simulaciones paso a paso, y es lo que emplearemos en el programa que estamos elaborando. Cuando hayas terminado, pulsa ok. Aprieta el botón y observa lo que ocurre. Puedes descargarte el código fuente del programa en la sección de 'Archivos adjuntos', al final de esta página.

12

Ejercicio 4. Propiedades de los agentes (1) Cada uno de los agentes que creamos, ya sean tortugas, patches o links, tienen una serie de propiedades. Algunas de estas propiedades vienen predefinidas en Netlogo. Por ejemplo, las tortugas tienen las siguientes propiedades predefinidas: who ;; identificador (no se puede modificar) color ;; color heading ;; orientación xcor ;; coordenada x ycor ;; coordenada y shape ;; forma label ;; etiqueta label-color ;; color de la etiqueta breed ;;raza hidden? ;; ¿visible o no visible? size ;; tamaño pen-size ;; tamaño del trazo al desplazarse (cuando pen-mode=down) pen-mode ;; ¿dejar trazo al desplazarse o no? Para ver las propiedades de cada tortuga en cada momento, no tenemos más que colocar el puntero del ratón sobre la tortuga y hacer clic en el botón derecho del ratón. Aparecerá una ventana. Deberemos seleccionar turtle x, y, a continuación, inspect turtle x (x es el identificador de la tortuga sobre la que hemos colocado el puntero del ratón).

Emergerá una ventana con las propiedades de la tortuga seleccionada en el momento actual:

13

Los patches también tienen sus propiedades: pxcor pycor pcolor plabel plabel-color

;; coordenada x del patch ;; coordenada y del patch ;; color del patch ;; etiqueta del patch ;; color de la etiqueta del patch

En este ejercicio, modificaremos el procedimiento del ejercicio 3 para que el cuadrado esté alineado con los ejes de coordenadas. El color del cuadrado no puede ser aleatorio, sino que debe ser definido de antemano. Además, podremos el mundo de color azul (es decir, modificaremos la propiedad pcolor de todos los patches para que éstos sean de color azul). Debemos partir del ejercicio anterior y modificar el procedimiento comenzar (en la pestaña procedures). to comenzar ca ;; clear-all ask patches [set pcolor blue] ;; mundo azul crt 1 ;; creamos una tortuga ask turtles [set color orange set heading 0] ;; color naranja, orientación "arriba" ask turtles [pd repeat 4 [fd 5 rt 90] pu] ;; dibujamos el cuadrado end El resultado debería ser semejante al que se muestra a continuación:

14

Puedes descargarte el código fuente de este programa en la sección 'Archivos adjuntos', al final de esta página.

Observación: También es posible asignar propiedades a los agentes justo en el momento de crearlos. Comparemos las siguientes órdenes: OPCIÓN 1: crt ask turtles [set color orange set heading 0]

OPCIÓN 2: 1 crt 1 [set color orange set heading 0]

En el caso de la opción 1, en primer lugar se crea la tortuga (y se le asignan los parámetros por defecto, es decir, color y orientación aleatorias) y, después, con la segunda línea de código, se modifican las propiedades color y heading. En cambio, con la opción 2, la tortuga se está creando directamente con las propiedades de color y heading definidas por el programador.

Ejercicio 5. Propiedades de los agentes (2) En este ejercicio vamos a repasar rápidamente cómo modificar las propiedades de los agentes. Además, vamos a distinguir cómo dar órdenes a un agente o a un conjunto de agentes. Practica escribiendo las siguientes órdenes en la ventana de comandos de Netlogo: - En primer lugar crearemos 5 tortugas y las desplazaremos 5 unidades: crt 5 ask turtles [fd 5] Nota: Hasta ah...


Similar Free PDFs