¿Qué es Netlogo?
Netlogo es un entorno programable de modelado para simular fenómenos naturales y sociales. Es especialmente adecuado para modelar sistemas complejos que se desarrollan en el tiempo. Los modeladores pueden dar instrucciones a cientos o miles de “agentes” independientes todos operando en paralelo. Esto hace que sea posible explorar la relación entre el nivel micro del comportamiento de los individuos y los patrones a nivel macro que emergen de la interacción de muchos individuos.
Página oficial de Netlogo: https://ccl.northwestern.edu/netlogo/
Instalación
Puede ser instalado en Mac, Linux o Windows puede ser descargado por medio del siguiete enlace https://ccl.northwestern.edu/netlogo/download.shtml.

Figura 1. Logo de Netlogo

Figura 2. Primer pantallazo de Netlogo al iniciar
Primer Código
Para comenzar arrestremos en la pantalla un botón de inicio, el cual nos servirá para inicar la simulación con un click.

Figura 3. Del lado izquierdo la creación del boton inicio. Del lado derecho al hacer clic
E incluimos el siguiente código en la pestaña de código:
to inicio clear-all reset-ticks ask patches[set pcolor green ] end
En este código nos dice que al botón de nombre inicio ejecute las línas de código hasta end, en este caso le decimos que limpie las variables y que escoja nuestro universo de la simulación de color verde.
Netlogo utiliza unas variables primitivas para trabajar en su código como por ejemplo:
Algunas variables
- Turtle (tortuga)
- Patch (parcela)
- Agentset (conjunto de agentes)
- Color (color)
- Task (tarea)
- Control/Logic (control/lógica)
- World (mundo)
- Perspective (perspectiva)
- Input/Output (entrada/salida)
En el código anterior utilizamos la variable primitiva patches la cual selecciona todas las parcelas de nuestro universo, en este ejemplo las establece de un color definido.
Ahora usemos las tortugas para llenar nuestro mundo de agentes. Incluimos en nuestro universo un desplazador y la llamaremos tortuga:

Figura 4. Creamos un deslizador llamado: ‘tortugas’
Incluimos el código anterior para crear un número de tortugas definidas en el deslizador. Las estableceremos aleatoriamente con setxy.
Las variables random-xcor y random-ycor son variables de turtles y nos ayuda a definir un x y y aleatoria para el turtle que estamos creando. En este caso el número de torturgas definidas en el deslizador.
to inicio clear-all reset-ticks create-turtles tortugas[ setxy random-xcor random-ycor ] ask patches[set pcolor green ] end
Al correr nuestra simulación obtendremos:

Figura 6. Simulación de un número de tortugas.
Listo, ahora hagamos la simulación más iterativa, creamos un botón que se llame movertortuga e incluimos el siguiente código:
to movertortuga ask turtles [ forward 1 set heading random 360 if (pcolor = green)[ set pcolor blue ] ] end
En este código hacemos varias cosas, con la línea 2 solicitamos a cada elemento de turtles que realice la siguientes acciones dentro.
En la línea 3 hacemos que se desplaze una parcela en donde está dirigida la tortuga. En la línea siguiente le decimos que gire a una dirección aleatoria dentro de 360. Y en la parceque que se desplaza preguntamos si es de color verde, si es verde que la establezca azul.
Tenemos entonces una simulación como la figura 7 al presionar el botón de movertortuga varias veces:

Figura 7. Simulación tortugas en movimiento
Ahora vamos hacer que las tortugas mueran, decimos que tienen una resistencia de 10 y por cada movimiento que realice se disminuye un punto de resistencia, pero si come en un pasto verde la resistencia no baja, tendremos entonces el siguiente código:
turtles-own[resistencia] to inicio clear-all reset-ticks create-turtles tortugas[ setxy random-xcor random-ycor set resistencia 10 ] ask patches[set pcolor green ] end to movertortuga ask turtles [ forward 1 set resistencia resistencia - 1 set heading random 360 if (pcolor = green)[ set pcolor blue set resistencia resistencia + 1 ] if(resistencia = 0)[ die ] ] end
Analicemos algunas línes importantes de este código:
Línea 1: Establecemos un atributo a las tortugas llamado resistencia.
Línea 9: Establecemos a la tortuga una resistencia de 10.
Línea 18: Después de mover una tortuga disminuimos su resistencia en una unidad.
Línea 23: Al cambiar de color que suba una unidad de resistencia.
Líneas 26-28: Si la resistencia es 0, matar a la tortuga.
De esa manera la simulación llegará un punto donde no halla tortuga. Si marcamos en el botón movertortuga, para simular continuamente sin presionar clic obtenemos una pequeña simulación de nuestro programa:
Simulación
- Crear aleatoriamente agentes de 40 y 60 individuos
- 2 agentes no pueden ocpuar la misma parcela
- Si un agente tiene todos sus lados con otros agentes, el agente no se mueve
- Si un agente se mueve en una parcela verde gana 3 de energía.
- Pierde 1 de energía por moverse.
turtles-own[energia] to start clear-all clear-output reset-ticks let total random (21) + 40 ask patches[set pcolor green ] create-turtles total[ set heading one-of [0 90 180 270 360] set energia 10 move-to one-of patches with [pcolor = green] ask patch-here [ set pcolor blue] ] show count turtles end to next ask turtles [ let move 0 let head one-of [0 90 180 270 360] let countTry 4 let tryy 0 while [tryy = 0] [ set heading head forward 1 set move 1 set energia energia - 1 if (any? other turtles-here) [ forward -1 set head head + 90 set move 0 set countTry countTry - 1 ] if (countTry = 0) [ set tryy 1 ] if( move = 1 ) [ set tryy 1 ] ] if (pcolor = green)[ set pcolor blue set energia energia + 3 ] if( energia < 1) [ die ] ] show count turtles end
La simulación queda entonces:
Comentarios