martes, 10 de febrero de 2009

Ejercicio 11. Propiedades adicionales en los agentes

En el ejercicio 4 vimos que cada agente (ya sea tortuga, patch o link) tiene una serie de propiedades intrínsecas. Por ejemplo, las tortugas tienen las siguientes propiedades por defecto:

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?

Nosotros podemos añadir propiedades adicionales a los agentes. Por ejemplo, supón que estás haciendo un estudio sobre tortugas y que te resulta interesante poder asignarle a cada tortuga una edad.

Para añadir una propiedad adicional a un agente, se utiliza la primitiva own. Veamos cómo se añade la propiedad “edad” a una tortuga:

turtles-own [edad] ;; añadimos la propiedad “edad” al conjunto de propiedades de las tortugas.

Para fijar ideas, crea este sencillo procedimiento:

turtles-own [edad] ;;añadimos la propiedad "edad" a las tortugas

to comenzar
ca ;; clear-all
crt 1 [set edad 7] ;; creamos una tortuga y le asignamos una edad de 7
crt 1 [set edad 10] ;; creamos otra tortuga y le asignamos una edad de 10
ask turtles [show edad] ;; pedimos a las tortugas que muestren su edad
end

Después, en la ventana de comandos escribe “comenzar” para ejecutar el procedimiento que acabas de crear. Verás que se muestra, en primer lugar, el agente al que hemos pedido que ejecute la acción y, a continuación, la propiedad que le hemos mandado mostrar (en este caso “edad”).

Si recuerdas, en casos anteriores, para mostrar las propiedades de un agente en la ventana de comandos empleábamos la primitiva print (ver ejercicio 6). La diferencia entre print y show es que con show se muestra el agente llamado, mientras que con print no. Ambas dejan un retorno de carro al final.

Para comprobar esta diferencia, puedes sustituir la línea de código

ask turtles [show edad]

por la siguiente:

ask turtles [print edad]

2 comentarios:

hiram_economia dijo...

primero que nada gracias por postear esto en tu blogg me ha servido de mucho. ahora en este ejercicio y en el siguiente se me complica ya que (-1) me aparece que no existe en el diccionario de netlogo

y en el seguiente ejercicio me dice que nada llama edad ha sido explicado

que puedo hacer?

DP dijo...

Hola hiram_economia

Con respecto a tu segunda pregunta (ejercicio 11), ¿seguro que has declarado la nueva propiedad "edad" escribiendo

turtles-own [edad]

al principio del procedimiento?

Saludos.