5 Taller 5 : Corredores de Mariposas
5.1 Taller 5 : Descripcion
Muchos animales se dispersan: abandonan su hogar y se desplazan largas distancias para fines como apareamiento, en algún momento de su vida. Los animales dispersos responden al paisaje de diversas formas evitando algunas características y sintiéndose atraído por otras. Estas respuestas de comportamiento al paisaje pueden canalizar su movimiento en caminos denominados corredores. Los corredores se conciben como elementos lineales en el paisaje que facilitan la dispersión; ejemplos incluyen setos, cercas,y vegetación a lo largo de las carretera, sin embargo, nuestra percepción de los corredores es ciertamente limitada porque no podemos ver el paisaje a través de los ojos de los animales. Para demostrar el concepto de corredores , exploraremos a las mariposas en su proceso de apareamiento, las especies de mariposas, machos y hembras no apareadas aplican la estrategia de “cima”: simplemente avanzan cuesta arriba hasta que se concentran en las cimas de las colinas donde puedan encontrarse y aparearse.
5.2 Taller 5 : Pregunta
¿Cómo afecta la variabilidad en la tendencia de las mariposas a moverse cuesta arriba, la aparición de corredores ?
5.3 Taller 5 : Detalles del Modelo
5.3.1 Agentes y propiedades
El modelo tiene dos tipos de agentes: mariposas y parcelas. Los parcelas forman una cuadrícula de 150 × 150, cada parcela tiene una elevación. Las mariposas tiene una sola propiedad, su ubicación en el paisaje
5.3.2 Procesos
Solo hay un proceso en el modelo: el movimiento de las mariposas. cada mariposa observa que parcela vecina tiene una mayor elevación y se dirige a ella. (no usa información de elevaciones a distancias más lejanas). las mariposas no interactuan entre ellas en el proceso de llegar a la “cima”.
5.3.3 Variabilidad.
Las mariposas reales no siempre se mueven directamente cuesta arriba, probablemente debido a : (1) límites en la capacidad de las mariposas para detectar el área más alta de su vecindario, (2) factores distintos de la topografía (por ejemplo, flores que necesitan ser investigadas ) Esta variabilidad se modelará usando un parámetro q que representa la probabilidad de que un individuo (mariposa) se mueva directamente cuesta arriba en lugar de moverse al azar.
5.3.4 Observacion
Para visualizar los corredores virtuales, definiremos una función de ancho de corredor que “mide” el grosor de los corredores formados por las mariposas.
5.4 Taller 5 :Setup
Usaremos una topografía real leida de un archivo de datos, se crearan 500 mariposas esparcidas en el paisaje.
5.5 Taller 5 : Go
las mariposas se moveran intentando llegar a la “cima”, usando una variablidad (parámetro q)
5.6 Taller 5 : Implementacion del modelo
5.6.1 Procedimiento setup
Lo primero que haremos es colocar el paisaje , para ello hay que definir los parametros del mundo, oprima el botón configuración de NetLogo y llene la ventana que aparece de la siguiente manera:
Al hacer clic en el siguiente enlace: Archivo de Elevación , bajará a su computador el archivo ElevationData.txt que contiene la información de la elevación del terreno. Colóque el archivo en la misma carpeta que su Archivo netLogo:
Abra la pestaña de código de NetLogo y coloque el procedimento setup:
patches-own[elevation] ; variable de parcela donde se leerá la elevación del archivo de datos
to setup
clear-all
colocar-paisaje
reset-ticks
end
to colocar-paisaje
; Se asigna una elevación a cada parcela y se colorea de acuerdo con esta
; Las elevaciones se leen de un archivo
file-open "ElevationData.txt"
while [ not file-at-end? ]
[
let next-X file-read
let next-Y file-read
let next-elevation file-read
ask patch next-X next-Y [ set elevation next-elevation ]
]
file-close
let min-elevation min [elevation] of patches
let max-elevation max [elevation] of patches
ask patches
[
set pcolor scale-color green elevation min-elevation max-elevation
]
end
El procedimiento colocar-paisaje lee el archivo de datos (ElevationData.txt) y define en cada parcela la variable elevation.
Las últimas tres lineas del setup colorean las parcelas de acuerdo con su elevación.(comando scale-color) Active la pestaña interfaz, cree el botón setup al oprimr debe observar lo siguiente:
Este es el“habitat” donde se moveran las mariposas. Creemos ahora las mariposas, añadamos el siguiente procedimiento al setup:
to colocar-mariposas
; Crea las mariposas
create-turtles 500
[
set size 2
set shape "butterfly"
; Posición de las mariposas al azar en el mundo
setxy random-pxcor random-pycor
pen-down ; esta opción deja el rastro de cada mariposa en el mundo cuando se mueve
]
end
y añadamos a setup el procedimiento colocar-mariposas:
to setup
clear-all
colocar-paisaje
colocar-mariposas
reset-ticks
end
Al oprimir setup vera lo siguiente:
5.6.2 Procedimiento go
Coloque el procedimiento go en la pestaña de código
to go ; mariposas en acción
if ticks >= 1000 [stop]
ask turtles [ move ]
tick
end
to move ; contexto mariposas
; Deciden si se mueven a la parcela más alta con probabilidad 0.1
ifelse random-float 1.0 < 0.1
[ uphill elevation ] ; se mueven hacia arriba
[ move-to one-of neighbors ] ; o se mueven al azar
end
cree ahora en la interfaz el botón go (recuerde habilitar la opción Continuamente del botón) y haga clic en setup y luego en go. Se observará lo siguiente.
5.6.3 Analizando el modelo
Ya tenemos construido el modelo básico, ahora vamos a terminarlo para poder analizarlo. Necesitamos hacer dos cosas:
- Conventir la probabilidad (0.1) de moverse al azar, en una probabilidad variable (deslizador), este deslizador lo llamaremos q
- Definir la función que calcula el ancho de los corredores
Entonces creemos un deslizador llamado q de la siguiente manera:
y reemplazemos la probabilidad 0.1 del procedimiento go por q
to move ; contexto mariposas
; Deciden si se mueven a la parcela más alta con probabilidad 0.1
ifelse random-float 1.0 < q ; ojo cambio: 0.1 por q
[ uphill elevation ] ; se mueven hacia arriba
[ move-to one-of neighbors ] ; o se mueven al azar
end
Para calcular el ancho de los corredores debemos definir dos nuevas variables:
una de tipo tortuga para guardar el punto de partida de cada mariposa (start-patch) y otra de tipo parcela para saber si una parcela fue visitada o no por alguna mariposa (used?). Modifiquemos la parte superior de la pestaña de código colocando lo siguiente:
patches-own
[
elevation
used?
]
turtles-own [ start-patch ]
Inicialmente ninguna parcela ha sido usada entonces debemos colocarle a cada parcela que no ha sido usada para ello colocamos set used? false dentro del ask patches del procedimeinto colocar-paisaje:
ask patches
[
set pcolor scale-color green elevation min-elevation max-elevation
set used? false
]
end
Debemos inicializar los valores de start-patch dentro del procedimineto colocar-mariposas:
to colocar-mariposas
; Crea las mariposas
create-turtles 500
[
set size 2
set shape "butterfly"
set start-patch patch-here ; Ojo Nuevo
; Posición de las mariposas al azar en el mundo
setxy random-pxcor random-pycor
pen-down ; esta opción deja el rastro de cada mariposa en el mundo cuando se mueve
]
end
y también registar que la parcela fue usada en el procedimiento move:
to move ; contexto mariposas
; Deciden si se mueven a la parcela más alta con probabilidad 0.1
ifelse random-float 1.0 < q ; ojo cambio: 0.1 por q
[ uphill elevation ] ; se mueven hacia arriba
[ move-to one-of neighbors ] ; o se mueven al azar
set used? true ; Nuevo registrar que en la parcela paso una mariposa
end
Finalmente definiremos la función que calcula el ancho de los corredores, colóquela al final en la pestaña de código:
to-report corridor-width ; Calcula el ancho de los corredores
let num-patches-used count patches with [ used? ]
let mean-distance-moved mean [distance start-patch] of turtles
report num-patches-used / mean-distance-moved
end
Listo el modelo básico, el codigo total es el siguiente:
patches-own
[
elevation ; variable de parcela donde se leerá la elevación del archivo de datos
used?
]
turtles-own [ start-patch ]
to setup
clear-all
colocar-paisaje
colocar-mariposas
reset-ticks
end
to colocar-paisaje
; Se asigna una elevación a cada parcela y se colorea de acuerdo con esta
; Las elevaciones se leen de un archivo
file-open "ElevationData.txt"
while [ not file-at-end? ]
[
let next-X file-read
let next-Y file-read
let next-elevation file-read
ask patch next-X next-Y [ set elevation next-elevation ]
]
file-close
let min-elevation min [elevation] of patches
let max-elevation max [elevation] of patches
ask patches
[
set pcolor scale-color green elevation min-elevation max-elevation
set used? false
]
end
to colocar-mariposas
; Crea las mariposas
crt 500
[
set size 2
set shape "butterfly"
set start-patch patch-here
; Posición de las mariposas al azar en el mundo
setxy random-pxcor random-pycor
pen-down ; esta opción deja el rastro de cada mariposa en el mundo cuando se mueve
]
end
to go ; mariposas en acción
if ticks >= 1000 [stop]
plot corridor-width
ask turtles [ move ]
tick
end
to move ; contexto mariposas
; Deciden si se mueven a la parcela más alta con probabilidad 0.1
ifelse random-float 1.0 < q
[ uphill elevation ] ; se mueven hacia arriba
[ move-to one-of neighbors ] ; o se mueven al azar
set used? true ; registrar que en la parcela paso una mariposa
end
to-report corridor-width ; Calcula el ancho de los corredores
let num-patches-used count patches with [ used? ]
let mean-distance-moved mean [distance start-patch] of turtles
report num-patches-used / mean-distance-moved
end
Para ensayar la funcionalidad del modelo trazaremos una gráfica de ancho de corredor , Seleccione Gráfico del menu de opciones y defínala de la siguiente manera:
</br>
Oprima ahora setup y go ,la gráfica dibujada debe ser parecida a la siguiente: