Population survival inside a dynamic forest
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
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.
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.