jueves, 5 de febrero de 2009

Ejercicio 7. Propiedades de los agentes (4)






Discriminación de agentes por sus propiedades.

Hasta el momento, para identificar a los agentes, o bien les hemos “llamado” a todos a la vez:

ask turtles [“comandos”]
;; pedimos a todas las tortugas que ejecuten ciertos comandos

ask patches [“comandos”]
;; pedimos a todos los patches que ejecuten ciertos comandos

o bien les hemos “llamado” por su identificador (who en el caso de las tortugas, [pxcor pycor] en el caso de los patches):

ask turtle 5 [fd 5]
;;pedimos que sólo la tortuga 5 avance 5 posiciones

ask patch 3 4 [set pcolor blue]
;;pedimos que sólo el patch [3 4] se ponga azul

¿Cómo seleccionamos un conjunto de agentes que tienen una propiedad concreta? Es decir, ¿cómo seleccionaríamos por ejemplo todas las tortugas de color rojo o todos los patches que tengan coordenadas x positivas?

Para hacer esta distinción de los agentes a partir de sus propiedades, se utiliza la primitiva with.

La sintaxis es la siguiente:
ask “agentes” with [“propiedad”] [“acciones”]

A continuación se muestran unos ejemplos de cómo hacer uso de esta primitiva. Escríbelos paso a paso en la ventana de comandos para familiarizarte con el uso de la primitiva with.

;;PASO 1. Creamos 2 tortugas de tamaño 1, las situamos en una posición aleatoria del mundo y las pintamos de rojo.
crt 2 [set shape "turtle" set size 1 set xcor random-pxcor set ycor random-pycor set color red]

;;PASO 2. Creamos 2 tortugas de tamaño 2, las situamos en una posición aleatoria del mundo y las pintamos de azul
crt 2 [set shape "turtle" set size 2 set xcor random-pxcor set ycor random-pycor set color blue]

;;PASO 3. Creamos 2 tortugas de tamaño 3, las situamos en una posición aleatoria del mundo y las pintamos de blanco
crt 2 [set shape "turtle" set size 3 set xcor random-pxcor set ycor random-pycor set color white]

;;PASO 4. Pedimos a las tortugas rojas que avancen 5 posiciones.
ask turtles with [color = red] [fd 5]

;;PASO 5. Pedimos a las tortugas azules que adquieran tamaño 4.
ask turtles with [color = blue] [set size 4]

;;PASO 6. Pedimos a las tortugas blancas que muestren “soy blanca” como etiqueta.
ask turtles with [color = white] [set label “soy blanca” show label]

;;PASO 7. Pedimos a las tortugas que tengan coordenada y positiva que avancen 3 posiciones.
ask turtles with [ycor > 0] [fd 3]

;; PASO 8. Pedimos a los patches que tengan coordenada x negativa que se vuelvan de color amarillo.
ask patches with [pxcor <0] [set pcolor yellow]


2 comentarios:

ADLO dijo...

Uff, esto es un no parar, ¡qué ritmo, my God! No hay quien siga tanto ejercicio.

DP dijo...

Para evitar los problemas que pueden surgir al copiar el código del blog y pegarlo en Netlogo, puedes descargarte el archivo desde aquí: Ejercicio7