Population survival inside a dynamic forest

Population survival inside a dynamic forest preview image

1 collaborator

Default-person Leonardo Saravia (Author)

Tags

extinctions 

Tagged by Leonardo Saravia almost 6 years ago

forest dynamics 

Tagged by Leonardo Saravia almost 6 years ago

population dynamics 

Tagged by Leonardo Saravia almost 6 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.1.0 • Viewed 589 times • Downloaded 63 times • Run 0 times
Download the 'Population survival inside a dynamic forest' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

This is a model that explores how is the population dynamics of a species (birds) that lives in a dynamical habitat (forest), and how fragmentation or loss of habitat can influence the extinction of the species that lives within it. I call the habitat forest and birds are the organisms that live inside the forest. Then birds can reproduce only within the forest but survive equally outside the forest. The population of forest and birds have the same dynamics, they have a birth rate and a death rate. The birth of a new patch of forest is produced in the four closest neighbours if there is an empty site, the birth of a new bird is produced when there is an empty forest site in the 4 neighbours. We are assuming that a patch of forest is equivalent to the movement range of birds and that birds do not seek for a new forest patch if the forest where they live dies.

We can calculate the relation between birth-rate-forest and death rate which is called lambda, so we have a lambda for forest and a lambda for birds. The question is: for which lambda-forest the birds survive and which lambda-birds is needed? Is there an interaction between lambda-forest and lambda-birds?

This is related to the fragmentation of the forest, when lambda-forest reaches a particular value the forest is not continuous but it is composed of fragments, the birds population it is confined inside these fragments and becomes fragmented so the birds get extinct, this is called the critical value, for each lambda-birds the critical lambda-forest could be determined and vice-versa for each lambda-birds there is a critical lambda-forest.

HOW IT WORKS

We have two types of agents birds which are turtles and forest which are patches. Both have two properties: a birth-rate and a death-rate

We have a 2-dimensional discrete spatial environment defined by the NetLogo view.

Then the two types of agents have two actions, they can give birth to another individual and they can die. They die a constant rate regardless they position in the space, but they need an empty place in its four neighborhoods to give birth a new organism, additionally, the birds need that a forest patch that is not occupied by another bird, then only one bird per patch is allowed. The birds select the patch that is empty from the neighbors, but the forest select a patch at random and then if it is empty a new forest grows.

We first evaluate the events for the forest, and then we evaluate the events for the birds. For this we calculate the probability of forest birth relative to the total rate of forest events this is: birth-rate-forest / ( death-rate-forest + birth-rate-forest ). And the probability of birds births in the same way: birth-rate-birds /( death-rate-birds + birth-rate-birds )

Thus, what we measure as output is the proportion of forest alive, and the proportion of birds alive.

The only imputs that we need are the values of the parameters.

HOW TO USE IT

You need to seed an initial populations of forest and birds, this is to set the inital conditions to run the model.

There are different ways to set the initial conditions of the model:

1) The setup button puts in random positions a number of forest with one bird inside, controlled by the slider initial-population.

2) The setup-center button puts in the center of the view a square of 11 x 11 patches of forests with one bird.

3) The setup-full button fills all the view with forest and birds.

Then we need to set the death-rate-forest and birth-rate-forest sliders that control the forest rates, and the death-rate-birds birth-rate-birds sliders that control the birds.

Then the go button runs the model

The lambda-forest is birth-rate-forest/death-rate-forest, this has to be greater than 1 for the forest to survive (how much greater?)

The lambda-birds is birth-rate-birds/death-rate-birds, this has to be greater than 1, and probably greater than lambda-forest for the birds to survive (how much greater?)

The proportion of forest patches is the number of forest patches divided by the total number of patches in the view, and the proportion of birds is the number of birds divided by the total number of patches.

The plot shows in green the number of forest patches and in yellow the number of birds

THINGS TO NOTICE

Starting the model with setup-full is better if you want to know the equilibrium of both populations, and starting with setup-center is better if you want to know if the population get extinct or not.

The fact the birds select the empty patches of forest makes them survive with lower lambda than the forest.

THINGS TO TRY

You can start modelling a population of forest and birds that survive, i.e. both lambda-forest and lambda-birds greater than 2, and then move the birth-rate-forest slider down to observe when the birds population gets extinct.

EXTENDING THE MODEL

Deforestation could be added, one way to simulate deforestation is increase the death-rate-forest of the forest but the patterns of deforestation produced by humans are very different from random patterns (because mortality is random). Generally, the deforested zones are used for agriculture/livestock and they need roads to transport the harvest. These roads are straight lines with ramifications at 90 degrees and then square parcels with plantations. So, one interesting extension of this model is to add a sub-model for deforestation.

Another extension is that birds could try to search for a new empty forest patch if the one where they live dies.

Birds and forest can have a greater dispersal distance than the 4 neighbours patches, using 'in-radius' and a couple of sliders we can investigate the influence of the dispersal distance in the critical values for extinction.

RELATED MODELS

The voter model is related to this model

CREDITS AND REFERENCES

MIT License

Copyright (c) 2019 Leonardo A. Saravia

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

breed [forest one-forest] ; forest patches
breed [birds bird]        ; living birds

globals [ total-patches   ; Measure the total number of patches
          cumul-birds-list   ; List to calculate the average of bird proportion
          gr-forest
          gr-birds
        ]

to setup-ini
  clear-all
  set total-patches count patches
  set-default-shape birds "circle"
  set-default-shape forest "circle"
  set cumul-birds-list []
end 

to setup
  setup-ini

  ask n-of initial-population patches [
    sprout-forest 1 [set color green set size 1]
    sprout-birds 1 [ set color white set size .7]
  ]
  reset-ticks
end 

to setup-full
  setup-ini
  ask patches[
      sprout-forest 1 [set color green set size 1]
      sprout-birds 1 [ set color white set size .7]
  ]
  reset-ticks
end 

to setup-center
  setup-ini
  ask patches with [(abs pycor < 6) and (abs pxcor < 6)]
  [
    sprout-forest 1 [set color green set size 1]
    sprout-birds 1 [ set color white set size .7]
  ]
  reset-ticks
end 

to go
  ;; updates the probabilities of growth
  set gr-forest birth-rate-forest /( death-rate-forest + birth-rate-forest )
  set gr-birds birth-rate-birds /( death-rate-birds + birth-rate-birds )

  ask forest [ grow-forest ]
  (ifelse
    birds-behavior = "NoSelection" [
      ask birds [ grow-birds-no-selection ]
    ]
    birds-behavior = "BirthSelection" [
      ask birds [ grow-birds ]
    ]
    birds-behavior = "AdultSelection" [
      ask birds [ grow-birds-adult-selection ]
    ]

  )
  ;calc-birds-mean

  tick
  if habitat-proportion = 0 [stop]
  if (check-birds-extinction = true) and (birds-proportion = 0) [stop]
end 

to grow-forest
  ifelse random-float 1 > gr-forest
  [
    ;show "1 forest died"
    die
  ]
  [
    ask one-of neighbors4 [
      if not any? forest-here [
         sprout-forest 1 [set color green set size 1]

      ]
    ]
  ]
end 

;;
;; birds procedure: if newborns select a suitable patch if exist
;;

to grow-birds
  ifelse random-float 1 > gr-birds
    [ die ]
    [
      if any? forest-here [

          let target one-of neighbors4 with [any? forest-here  and not any? birds-here]
          if target != nobody [
            hatch-birds 1 [ move-to target ]
          ]
      ]
    ]
end 

;;
;; Birds procedure: birds select at random a patch to newborns
;;

to grow-birds-no-selection
  ifelse random-float 1 > gr-birds
    [ die ]
    [
      if any? forest-here [

        let target one-of neighbors4
        if (any? forest-on target and not any? birds-on target) [
          hatch-birds 1 [ move-to target ]
        ]

      ]
    ]
end 

;;
;; Birds select a suitable patch for newborns and if the forest dies they select a new forest patch
;;

to grow-birds-adult-selection
  ifelse random-float 1 > gr-birds
    [ die ]
    [
      ifelse any? forest-here [

        let target one-of neighbors4 with [any? forest-here  and not any? birds-here]
        if target != nobody [
          hatch-birds 1 [ move-to target ]
        ]
      ]
      [
        ;;show (word "Se va a mover" pxcor pycor)
        let target one-of neighbors4 with [any? forest-here and not any? birds-here]
          if target != nobody [
            move-to target
            ;; show (word "se movio!!!!!!!!"  pxcor pycor)
          ]
      ]
    ]
end 

to-report habitat-proportion
  report count forest / total-patches
end 

to-report birds-proportion
  ;print "Calculate birds proportion"
  report count birds / total-patches
end 

to calc-birds-mean
  ;if empty? cumul-birds-list
  ;; drop the first member of the list, but not until there are at least 100 items in the list
  if (length cumul-birds-list > 200) [ set cumul-birds-list but-first cumul-birds-list ]

  ;; add the number of birds-proportion in last tick to the end of the list
  set cumul-birds-list lput birds-proportion cumul-birds-list
end 

to-report check-birds-steady-state
  if ticks > 500 [

    let up-birds mean cumul-birds-list + (  standard-deviation cumul-birds-list )
    let down-birds mean cumul-birds-list - ( standard-deviation cumul-birds-list )

    if birds-proportion > down-birds and birds-proportion < up-birds
    [ report true ]
  ]
  report false
end 

There are 3 versions of this model.

Uploaded by When Description Download
Leonardo Saravia about 5 years ago Deleted profiler extension Download this version
Leonardo Saravia about 5 years ago Deleted profiler extension Download this version
Leonardo Saravia almost 6 years ago Initial upload Download this version

Attached files

File Type Description Last updated
Population survival inside a dynamic forest.png preview Preview for 'Population survival inside a dynamic forest' almost 6 years ago, by Leonardo Saravia Download

This model does not have any ancestors.

This model does not have any descendants.