Introducción a la programación en
Netlogo
Francisco J. Romero Camperohttp://www.cs.us.es/~fran/
Dpt. de Ciencias de la Computación e Inteligencia ArtificialUniversidad de Sevilla
El Método Ciéntifico como Metodología Docente
Observaciones
Teoría
Predicción
Experimentación
Diseño y desarrollo de experimentos
Formulación de hipótesis y teorías
Generación de predicciones
Verificación y testeo de predicciones
Definición de Agente● Un agente es una entidad capaz de percibir las condiciones
exteriores del entorno donde habita e interiores a sí mismo
para realizar acciones de forma independiente y autónoma. ● Un agente presenta la siguientes características:
– Autonomía: capaz de operar sin intervención directa de un ente externo
– Reactividad: capaz de responder a cambios que ocurren en el entorno
– Pro-actividad: capaz de iniciar acciones como respuesta a estados internos
– Habilidad social: capaz de interactuar con otros agentes.
(Wooldridge and Jennings, 1995)
Entorno
● El concepto de entorno es clave para la definición de agente.
● El entorno puede presentar las siguientes características:
– Accesibilidad / Inaccesibilidad
– Periódico / No periódico
– Estático / Dinámico
– Abierto / Cerrado
Agente
Entorno
SensoresEntrada
AcciónSalida
Netlogo
● Netlogo es una plataforma para el desarrollo y estudio de sistemas multiagentes.
● Netlogo es software libre.
● Netlogo está mantenido y desarrollado por una comunidad de modelizadores.
http://ccl.northwestern.edu/netlogo/
Interfaz de Netlogo
Primitivas Básicas ● Los agentes en Netlogo por cuestiones históricas se denominan turtles y
el entorno patches.
● Para crear un número de tortugas usamos la primitiva:create-turtles número_tortugas
● Para hacer que un agente realice una instrucción usamos la primitiva:ask turtles [“comandos”]ask patches [“comandos”]
● Podemos realizar instrucciones básicas con las siguiente primitivas:
– forward ;; (fd) avanzar
– back ;; (bk) retroceder
– left ;; (lt) giro a la izquierda
– right ;; (rt) giro a la derecha
● Para eliminar todos los agentes usamos la primitiva:clear-all
Procedimientos
● Los procedimientos son nuevos comandos definidos por el programador.
● Los procedimientos se definen utilizando las palabras claves to y end:
to setup
clear-all create-turtles 3 ask turtles [set xcor random-pxcor set ycor random-pycor]
end
Botones en Netlogo
Propiedades de turtles● Las turtles tienen las siguientes propiedades predefinidas:
who ;; identificador (no se puede modificar)color ;; colorheading ;; orientaciónxcor ;; coordenada xycor ;; coordenada yshape ;; formalabel ;; etiquetalabel-color ;; color de la etiquetabreed ;;razahidden? ;; ¿visible o no visible?size ;; tamañopen-size ;; tamaño del trazo al desplazarse (cuando pen-
mode=down)pen-mode ;; ¿dejar trazo al desplazarse o no?
Propiedades de patches● Los patches tienen las siguientes propiedades predefinidas:
pxcor ;; coordenada x del patchpycor ;; coordenada y del patchpcolor ;; color del patchplabel ;; etiqueta del patchplabel-color ;; color de la etiqueta del patch
● Estas propiedades puede modificarse utilizando la primitiva set.
ask turtles [ set color red ] ask patches [ set color blue ]
Variables Globales y Barras de Desplazamiento
Definir nuevos agentes
● Podemos definir nuevos agentes utilizando la función breed:
breed [predators predator ]
● Para definir propiedades asociadas a nuevos agentes utilizamos la extensión -own:
predators-own [ velocity ]
● Al igual que para turtles y patches podemos usar las primitivas create y set.
Manos a la Obra
Agentes del Sistema
● Crea dos nuevos tipos de agentes:
● Preys con singular prey.● Predators con singular predator.
● Crea una nueva propiedad para los entornos (patches) llamada chemical.
Procedimiento de Inicialización (setup)
● Define el procedimiento básico setup para inicializar el mundo virtual:
● Limpia el mundo de todo previo agente● Crea un numero de predadores de acuerdo a una variable
definida en una barra de desplazamiento en la interfaz gráfica llamada numero_predadores.
● Pide a los predadtores que fijen su color a rojo y sus coordenadas xcor e ycor a random-pxcor y random-ycor respectivamente.
● De forma similar a los dos puntos anteriores crea un número de presas, fija su color a azul y sus posiciones hazlas aleatorias.
● Pides a los entornos (patches) que fije chemical a 0.
Procedimiento de simulación (go)
● Define el procedimiento básico go para realizar la simulación:
● Pide a los depredadores que avancen una posición, giren un angulo a la derecha, otro a la izquierda (según variables definidas por barras de desplazamiento) y que incrementen en 10 unidades el chemical del entorno (patch) actual.
● Difundir el chemical 1 veces tres veces consecutivas. ● Pedir a los entornos (patches) que degraden el chemical
fijándolo al producto de chemical por 0.9 y que fijen su color según un scale-color basado en rojo que vaya desde 0.1 a 3
● Pedir a las presas que si detectan chemical por encima de 0.01 huyan de él.
Procedimiento de turn-against-chemical
● Define el procedimiento específico para presas turn-against_chemical:
● Define variables locales n_chemical, e_chemical, s_chemical y w_chemical que almacenen los valores de chemical en los entornos (patch-ahead) en los posiciones norte, este, sur y oeste respectivamente.
● Utilizando sentencias if hacer que la presa se mueva a la posición donde el chemical es menor.
Referencias
● Mitchel Resnick: Turtles, Termites, and Traffic Jams, The MIT Press, 1997
● Vanessa Stevens Colella, Eric Klopfer, Mitchel Resnick: Adventures in Modeling: Exploring Complex, Dynamic Systems with StarLogo, Teachers College Press, 2001
● John Maynard Smith: Evolution and the Theory of Games, Cambridge University Press, 1982