Hasta el momento, hemos supuesto que todas las tortugas que empleamos en el modelo van a tener el mismo tipo de propiedades. Por ejemplo, en el ejercicio 11 creamos una propiedad adicional (edad) para todas las tortugas. Sin embargo, supongamos que en nuestro modelo necesitamos dos tipos de agentes lo suficientemente diferenciados como para que cada uno de ellos tenga unas propiedades diferentes.
A cada tipo de agente con propiedades diferenciadas, Netlogo lo denomina “raza” (breed). Para definir una raza, utilizaremos la primitiva breed y, a continuación, entre corchetes, indicaremos el nombre del conjunto de agentes de la nueva raza (en plural) y el nombre del agente de la nueva raza (en singular). Por ejemplo, para definir la raza “coches” emplearemos la siguiente línea de código:
breed [coches coche]
Para asignar nuevas propiedades a la nueva raza de agentes, procederemos de la misma forma que en el ejercicio 11, utilizando la primitiva own. Por tanto, para añadir la propiedad “edad” a la raza coche, emplearemos la siguiente sentencia:
coches-own [edad]
Una vez creada la nueva raza, podemos decirle a Netlogo la forma que debe dar a los agentes de esta raza cada vez que le mandemos crear alguno de ellos. Para ello se emplea la primitiva set-dafault-shape. Por ejemplo, para que los agentes de la raza coche tengan forma de coche por defecto cada vez que los creemos, deberemos usar la siguiente sentencia:
set-default-shape coches “car”
Para crear los agentes de la nueva raza, usaremos la primitiva create seguida de un guión y el nombre de la raza. Por ejemplo, para crear 20 coches emplearemos la siguiente codificación:
create-coches 20
ask coches [fd 10]
En el siguiente ejemplo crearemos dos razas de agentes distintas: por un lado una raza “coches" con la propiedad “edad” y una raza “flores” con la propiedad “planta”. Asignaremos formas distintas a los agentes de las dos razas y finalmente ordenaremos acciones distintas a cada raza de agentes.
breed [coches coche] ;; definimos el primer tipo de agente
breed [flores flor] ;; definimos el segundo tipo de agente
;; DEFINICIÓN DE PROPIEDADES
coches-own [edad] ;; añadimos una propiedad adicional a los coches
flores-own [planta] ;; añadimos una propiedad adicional a las plantas
;; PROCEDIMIENTOS
to comenzar
ca ;; clear-all
set-default-shape coches "car" ;; establecemos una forma por defecto para el tipo de agente "coche"
set-default-shape flores "flower" ;; establecemos una forma por defecto para el tipo de agente "flor"
create-coches 20 ;; creamos 20 coches
create-flores 20 ;; creamos 20 flores
ask coches [set edad 15] ;; definimos la edad de todos los coches
ask flores [set planta "castaño"] ;; definimos la planta de la que proceden las hojas
ask coches [fd 10] ;; pedimos a los coches que avancen 10 posiciones
ask flores [fd 5] ;; pedimos a las flores que avancen 10 posiciones
end
1 comentario:
Para evitar los problemas que pueden surgir al copiar el código del blog y pegarlo en Netlogo, puedes descargarte el archivo desde aquí: Ejercicio12
Publicar un comentario