jueves, 29 de enero de 2009

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


Para crear tortugas, usamos la primitiva create-turtlescrt en abreviatura), seguido del número de tortugas que queremos crear. Ejemplo:

crt 2 ;; crea dos tortugas (equivalente: create-turtles 2)

Se generarán dos tortugas en el centro de coordenadas.

Podemos pedir a los agentes que realicen acciones. Para ello usamos la primitiva ask seguida del agente (o agentes) a los que vamos a ordenar la acción y, a continuación, entre corchetes, la acción a realizar por el / los agente(s). Algunas de las primitivas se muestran a continuación:

forward ;; (fd) avanzar
back ;; (bk)retroceder
left ;; (lt)giro a la izquierda
right ;; (rt)giro a la derecha
repeat ;; repetir un conjunto de primitivas
pen-up ;;(pu)subir el lápiz (los agentes no deja huella al moverse)
pen-down ;;(pd)bajar el lápiz (los agentes dejan trazos al moverse)
clear-all;;(ca) se resetean variables, se limpia “el mundo”, se borran gráficas, etc.


Nota: En Netlogo, para introducir un comentario detrás de una línea de código, se emplea punto y coma (;) antes del comentario.

Prueba a escribir lo siguiente en la ventana de comandos (línea a línea) y observa lo que ocurre:



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.

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 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.

viernes, 23 de enero de 2009

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).

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, consulta la siguiente entrada del blog: Vistas en Netlogo (2)

jueves, 22 de enero de 2009

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).


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).

jueves, 15 de enero de 2009

Introducción a Netlogo

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 medio ambiente. 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í.

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. 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 viene con una galería de modelos (models library), que es 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 http://ccl.northwestern.edu/netlogo/. 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.