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:

Archivo de Elevación

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:

  1. Conventir la probabilidad (0.1) de moverse al azar, en una probabilidad variable (deslizador), este deslizador lo llamaremos q
  2. 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: