domingo, 22 de junio de 2008

In-cone y in-radio


En el cono de visión de la tortuga. Hay una primitva bastante útil y es in-cone. Este reporter te permite darle a una tortuga un "cono de visión" frente a sí misma. El cono está definido por dos entradas, la visión a distancia (radio) y el ángulo de visión. El ángulo de visión puede variar desde 0 a 360 y se centra en torno a la tortuga actual de partida. Si el ángulo es de 360, luego in-cone es es equivalente a in-Radius, esta última primitiva entrega todos los agentes que están a cierta distancia. In-cone informa de un agentset que incluye sólo los agentes de la original agentset que caen en el cono. E incluye al mismo agente. La distancia a un parche se mide desde el centro del parche.

Ejemplo Vision Cone example (en la libreria de modelos)

breed [ wanderers wanderer ] ;;creamos una cria que será tortuga roja
breed [ standers stander ] ;;creamos una cria que serán puntitos grises

to setup
clear-all
;; creamos una gran cantidad de tortugas del tipo standers las ponemos grises y las distribuimos al azar

create-standers 6000
[
setxy random-xcor random-ycor
set color gray
]
;; creamos una gran tortuga roja del timpo wanderes
create-wanderers 1
[
set color red
set size 15
]
;; hacemos que sel cono sea visible
go
end

to go
;; pnemos a los standers de color gris
ask standers [ set color gray ]
;; hacemos el curaito para la roja
ask wanderers
[
rt random 20
lt random 20
fd 1
;; le decimos a todos los standers que esten en el cono de visión que se pongan blancos
;; vision-radius y vision-angle son sliders

ask standers in-cone vision-radius vision-angle
[
set color white
]
]
tick ;; incrementamos en uno los ticks
end

El uso de with


Para varios proyectos es necesario poder tomar decisiones respecto del valor de una variable de tortuga. Aquí entre el uso de la primitiva with.

ejemplo
si queremos que la tortuga muera despues de determinados ticks de tiempo

turtles-own [tiempodevida] ;;las tortugas tienen una variable que se llama tiempodevida

to setup
ca ;;limpiamos la pantalla
crt numt
ask turtles [set tiempodevida random 1000] ;; distribuimos al azar de 0 a 1000 la vidad de c/u de las tortugas
end

to dist ;; las distribuimos al azar de distancia
fd random 10 + 10
end


to muereTortugas
ask turtles with [ ticks > tiempodevida ] [ die ] ;; todas las tortugas "con" tiempodevida menor que el conteo de ticks se muere
tick ;; incrementamos en 1 tick los ticks
end



los ticks son unidades de tiempo que mide el sistema. El comando tick, aumenta en 1 los ticks. Pueden agregar un monitor con reporter "ticks" (sin comillas).

miércoles, 18 de junio de 2008

Insertando un gráfico

Gráficos


Esta característica te permite crear gráficos para ayudarte a entender qué esta pasando en tu modelo. Antes de que puedas graficar, necesitas crear uno o mas gráficos en la lengüeta de la interface. Cada gráfico deberá tener un único nombre, el cual será utilizado como referencia para trabajar con el código en la lengüeta de procedimientos.

Especificando un gráfico

No es dificil graficar con un sólo gráfico, pero si tienes mas de uno, tendrás que indicar cual vas a utilizar, para esto se utiliza el comando set-current-plot junto al nombre del gráfico encerrado en comillas:

set-current-plot "Distancia vs. tiempo"

Muy importante: debes escribir el nombre tal cual lo escribiste al momento de crear el gráfico. Si cambias el nombre del gráfico, no olvides cambiar los procedimientos.

Especificando un lápiz

Cuando haces un nuevo gráfico, este tiene sólo un lápiz. Si el gráfico actual tiene sólo un lápiz, es mas fácil comenzar a graficar las variables.

Pero tu puedes tener múltiples lápices. Puedes crear lápices adicionales usando los controles de edición del gráfico. Cada lápiz debe tener un nombre único, ya que este será utilizado en la sección de prcodimientos.

Para un gráfico con múltiples lápices, debes especificar cual deseas usar, para escoger usa el comando set-current-plot-pen junto al nombre del lápix entre comillas:
set-current-plot-pen "distance"
Graficando puntos

Existe dos comandos básicos para graficar cosas y son plot y plotxy.

Con el comando plot necesitas solo especificar el valor de "y" que quieres graficar. El valor de "x" será puesto automáticamente. El comando plot es epecialmente util cuando comcommand is especially handy when you want your model to plot a new point at every time step. Example:
to setup

...

plot count turtles

end



to go

...

plot count turtles

end


A continuación aparece el ejemplo de With con instrucciones sobre como graficar. Hay dos pens nuevo1 y tik. Existe un gráfico en la interface, que en este caso da lo mismo como se llame. El primero grafica la cantidad de tortugas en el tiempo y el otro grafica la cantidad de ticks, (es un poco inutil):

turtles-own [tiempodevida] ;;creamos una varible

to setup
ca
crt numt
ask turtles [set tiempodevida random 1000]
plot count turtles
end

to dist
fd random 10 + 10
end


to muereTortugas
ask turtles with [ ticks > tiempodevida ] [ die ]
set-current-plot-pen "nuevo1"
plot count turtles
set-current-plot-pen "tik"
plot ticks
tick
end