NetLogo tiene 3 tipos de objetos relevantes, patches (cuadrícula del fondo), turtles (objetos moviles) y links (relaciones entre turtles. Los patches y turtles tienen sus propiedades como coordenadas, color, shape, etc. Se pueden generar subset predeterminados con turtles-here (las que están sobre un patch determinado) o in-link-neighbors (los que están linkeados a una turtle en particular). with es otra palabra reservada que indica un subset con una característica particular. turtles-on
También se pueden generar collections propias con breeds. que pueden tener sus propiedades.
let fast-cars turtles with [ speed >0.3 ] ask fast-cars [ set size 2]
Esto es una creación dinámica de un set con una condición y el uso de ese set.
Los sets y las listas son diferentes ya que los sets no pueden ser –por ejemplo- ordenados, para eso:
let speed-list sort-on [ speed ] turtles
let new-size 1
foreach speed-list
[ ask ?
[ set size new-size new-size +1 ] ]
? es un caracter reservado que indica el número de turtle en un foreach.
Los sets de patches o turtles (o breeds) se recorren con ask y en lugar de ? se utiliza self
ask cats [
ask mice with [ distance self] < 1 [ statement]
]
Asincronismo
Cuando se hace un cambio en los atributos de los patches que dependen de los demás, el cálculo se hace incorrectamente porque se computa sobre los nuevos valores de los atributos a medida que se van calculando en lugar de los originales, Para evitar eso, se genera un set con la característica pertinente, y se hacen los cambios haciéndolos cálculos sobre lo salvado en los sets. el ejemplo muestra cómo se generan dos set diferentes de patches, uno con los de color rojo y otro con los de color verde. Se hacen cambios basados en los valores guardados, NO sobre los patches reales que cambian a medida que corre la rutina.
Cómo obtener el color de un patch con un clic sobre world getpatchcolor
Si nos encontramos en la necesidad de reemplazar un color por otro o saber qué color es el que aparece en un patch (especialmente si lo importamos de una imagen existente), el NetLogo nos ofrece una alternativa aunque no sea muy intuitiva para los novatos en la programación.
En la sección code (solapa superior Interface/Info/Code)
globals [pixelcolor]
to GetPixelColor
while [mouse-down?][
ask patch mouse-xcor mouse-ycor [set pixelcolor pcolor] ]end
mouse-xcor, mouse-ycor y pcolor son variables internas – pixelcolor es una variable declarada global la cual mostramos en el monitor. Es importante ver, en este ejemplo incluido en el paquete de NetLogo, que la importación de una imagen como drawing y como patch son significativas. Una importa una imagen en el canvas del world y la otra le asigna los colores de la imagen a cada uno de los patches y estos pueden ser manipulados. Esto es ideal para importar una imagen de fondo y posteriormente una superposición en los patches para modificarlo.
Típica inicialización de Turtles
El shape por defecto es una flechita pero se puede elegir entre varias alternativas built-in. La lista está bajo Tools/Turtle Shapes Editor y donde se pueden importar más y editarlas. En la edición hay una opción rotables. Por ejemplo las personas miran, por defecto, siempre hacia adelante a pesar de que la tortuga esté mirando en un sentido particular.
Esta es una función que puede tomar cualquier nombre y debe ser llamada desde un botón o, para testing, desde el coimmand center
Notepad++ para que use la sintaxis del NetLogo (lenguaje del usuario)
Si se utiliza Notepad++ como editor, se puede bajar de su web el archivo de lenguage personalizado por el usuario de NetLogo.
Variables y Scope
globals es la declaración de variables globales, se ponen en lista sin coma. turtles-own, es una declaración de variables propias de las tortugas (atributos del objeto). Las variables se pueden llamar desde cualquier perspectiva (tortuga, observador). Las asignaciones de valores se hacen con set y SIN el signo igual, x ej, set wealth wealth + income. (wealth += income)
Reports
En la sección de código, una función como esta, devuelve la suma de los valores de un atributo del top 50%, un plot podría usar la llamada a esta función para graficar la evolución de esa magnitud. Se podría entender como un “return”. La función puede recibir parámetros de cualquier tipo.
to-report top-10-pct-attr [ optional parameter ] report sum [ attr ] of max-n-of (count turtles * 0.08) turtles [attr]end