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

jueves, 22 de mayo de 2008

Pintar los parches con la tortuga


Como saben la tortuga se encuentra sobre un piso hecho de baldosas, las que llamamos patches (parches en español). La tortuga puede encontrarse en distintas posiciones sobre los parches, en el centro, en un esquina u otro lugar.
El siguiente código le permite a la tortuga pintar parches usando el procedimiento borrachito.

to pinta-parches-al-azar
;; la parte del borrachito
fd 1
rt random 90
lt random 90
;; ahora pone el color del parche debajo de ella en color rojo
set pcolor red
end


El borrachito


Hola este es un código simple para hacer que la tortuga se mueva como un borrachito, esto es, da un paso y luego genera al azar una nueva dirección.

to setup
ca
crt 1
end

to borrachito
fd 1
rt random 90
lt random 90
end

hacemos un botón que sea forever y que llame al procedimiento borrachito.

jueves, 27 de marzo de 2008

Primera sesión

Busca en internet la definición de sistema descentralizado y construye tu propia definición y escríbela en tu blog.