__xid-4509782_1
__xid-4509782_1
Learning Goals
On completing this module, students are expected to be able to:
• Create models of population growth using STELLA.
• Differentiate between balancing (negative) and reinforcing (positive)
feedbacks on population growth.
• Use a predator-prey model to explore trophic relationships and
population dynamics.
• Explain how carrying capacity leads to a stabilization of population.
Experiment with an Easter Island population and resources model to
explore the conditions that allow sustainable use of resources versus
collapse of civilization.
Predator-prey cycles
Records of the Hudson’s Bay Company, fur traders in Canada from the
mid-1800s to the mid-1900s, reveal a distinct periodicity in the
numbers of Canada lynx and snowshoe hares (rabbits) trapped over
time:
1
Furthermore, these records reveal that lynx and hare populations are
slightly out of phase, with the lynx population rising after the hare
population rises, and a rapid decline in the hare population thereafter.
The behavior of this system is a classic example of a predator-prey
cycle: As prey populations increase, predators increase, but as
predators increase, prey decline, leading to a collapse in predators
that allows prey populations to rebound.
This system can be described mathematically with a number of partial
differential equations and can then be solved analytically for different
times. Instead of doing that we are going to use the STELLA software
package and let the computer do the heavy lifting. As you know from
our first week of class, STELLA uses boxes to represent reservoirs of a
particular item. These reservoirs could be water in a lake, phosphorus
in soils, carbon dioxide in the atmosphere, or in our case, a population
of hares.
2
2. Now click on the Stock icon (rectangle in the upper left
corner of the window - ) and then click on the model page.
Rename the Stock 1 text Hares by typing over the text. You
should have something that looks like this when you are done:
The question mark in the yellow triangle means that we have not yet
specified the initial population of hares. We will take care of that
later.
3. For now, recall from last week that STELLA uses an arrow to
represent flows into or out of a reservoir. We can create a simple
model of how the hare population might change over time by
connecting a flow arrow labeled hare births to the Hares reservoir.
Click on the flow arrow icon next to the stock icon in the
upper left of the modeling page. Then, starting somewhere
outside of the Hares reservoir, hold the mouse key down and
drag the flow arrow into the Hares reservoir until the latter
lights up. Rename the Flow 1 text hare births. When you are
done, you should have something that looks like this:
3
Note: if you have not succeeded in connecting the hare births flow to
the Hares reservoir, you will see a cloud on both sides of your flow
arrow:
If this is the case, drag the cloud next to the arrow head into the
reservoir until it turns blue; the flow should then be connected to the
reservoir. If this does not work, simply click on the flow, hit the delete
key, and try to draw the flow again.
In STELLA, the units associated with flows are given by taking the
units of the reservoir to which they are attached and dividing by time.
In our case, the births flow will be measured in units of hares/year.
We will ensure that this is so later.
4. Now we know that rather than there being a fixed number of hares
born every year, the births of hares depend on how many hares
already exist in the population. You need at least one male and one
female to reproduce, and the bigger the population, the larger the
number of babies that will be produced in any given year. The number
of hares born also depends on the fecundity of the population (i.e. the
birth rate, or how many offspring are produced per breeding pair each
year). To represent these dependencies, we add a birth rate converter
and pink connector arrows to our STELLA model so that it looks like
this:
4
6. Click on the pink Connector arrow again, and this time, draw
an arrow from the hare birth rate converter to the hare births
flow.
If you mess up and accidentally get the polarity of the arrows wrong,
just click on the circle at the originating end of the arrow (i.e.,
opposite the arrow head) until it becomes solid and then hit the delete
key on your keyboard.
Now click on the green check mark in the lower right corner of
the window.
Note that the question mark in the Hares reservoir box disappears,
since we have now specified a starting value for the model run.
5
8. Now click on the hare birth rate and enter a value of 1.25.
Again click on the green check mark and make sure the
question mark on the hare birth rate converter disappears.
9. Click on the hare births flow arrow. The number of hares being
born every year is the product of the number of hares that already
exist and the birth rate. For this reason, we do not enter a fixed
number into the equation box. Rather we put in the following
equation: Hare births = hare birth rate * Hares. The figure on the
next page shows what this should look like when you are done.
6
10. We are almost ready to run the model. Click on the graph icon
on the menu bar, and then click anywhere on the model page. A
graph will appear. Double click on the y-axis to open the Graph
settings window. Under Series list, click on the green circle
containing the plus sign and select the Hares reservoir to plot the
hare population over time:
At this point we are ready to run the model. What do you predict
the population of hares will look like over time? Will they
increase, decrease, or stay the same? If you think the
population will change, will the changes be linear or non-
linear?
11. Let us find out if your predictions were correct. On the main
menu, select Model and then Run Specs. Change the model run time
7
from 0 to 12 to 0 to 50, and change the Unit of time to Years. Leave
the DT as is for now. Click the green check mark in the lower right
corner of the window.
Now click on the Run arrow in the lower left corner of the software
window. Take a look at the graph at the end of the run. Then, carry
out the 1/2 DT test discussed last week (e.g. open up the Run
Specs again, and cut the DT in half, then re-run the model and
compare the results to the first run) until you get a stable
result in which the final values are no longer changing.
8
What is the approximate population of hares after 50 years?
12. Note that they have reproduced like bunnies! The growth of the
hare population contains a self-reinforcing feedback loop: the greater
the population becomes, the more babies are born every year. Clearly
this population is a bit out of control. What have we forgotten to
include in our model?
Obviously we need to include the fact that the hares also die, which
we could do by modifying our model to look like this:
9
But the lynx population is not the only thing that matters. Rather, the
rate at which hares can be trapped by lynx is important, and this
factor itself depends on the density of hares (number per unit area)
available to be trapped. If the density is low, lynx will have a hard
time finding hares to feed on, whereas if the density is high, they will
have plenty of food. Modify your model to include these
additional components so that it looks like this:
10
13. Note: we have drawn a pink Connector arrow from the hare
density to the lynx death rate because the lower the density of hares,
the more lynx starve to death, and the higher the density, the fatter
and happier the lynx are. Let us fill in the remaining question marks
so that we can run the model. Enter the following values by double
clicking on each model element, putting in the value, and then
clicking the green check mark:
14. The lynx death rate requires a bit more complicated treatment.
We have already said that the death rate depends on the density of
the hares, but it turns out this is not a linear relationship. Instead it is
a sort of negative exponential, meaning that the death rate goes up
dramatically as the density of hares decreases. To represent this
11
nonlinear relationship we will create a graphical function of the lynx
death rate based on the hare density. Click on the lynx death rate
converter circle. In the window that opens up, select hare
density as the value to which the lynx death rate is equivalent.
12
Check on the Graphical check box and then set the axis limits
on the hare density axis to be 0 and 100 and on the lynx death
rate to be 0 and 1. Click on the Points tab and then on the
padlock to unlock the data window. Enter the following data
into the hare density and lynx death rate columns:
13
80 0.10
90 0.07
100 0.05
What these values say is that 94% (0.94) of the lynx will die if there
are no hares around, but only 5% (0.05) will die if the density is 100.
When you are done, your window should look like this:
15. We need to make a similar graph for the number of hares killed
per lynx. We are going to assume that the higher the density of the
hares, the higher the kill rate. Following the same kinds of steps
14
you just used to enter data on lynx death rate as a function of
hare density, modify your STELLA model to include a
dependency of hares killed per lynx on hare density. See the
figures on the next page for how to do this and what values to
use.
15
16. Given the reading we have done about the lynx-hare predator-prey
cycle, we are expecting the populations of both species to oscillate.
Go to the STELLA help documentation and click on the
Contents tab. Look for the "Choosing the appropriate algorithm
and DT" section and read what it says:
16
Based on what you have read, should we be using the Euler or
the Runge-Kutta 4 method?
17. Paste a copy of your lynx and hare populations versus time
graph in here. Note, you will want to check on the Multiscale
option under the Left Y-Axis selections in the Graph Settings
17
window because otherwise you will not be able to view the
oscillations in the lynx population:
18
If the timing does not match, by how many years do the peaks
differ?
How does the timing you simulate with the model compare to
the actual timing recorded by the Hudson's Bay Company?
Comment both on the periods of oscillation and on any leads or
lags between the lynx and hare population curves.
Can you think of any reasons why the lynx population may be
underestimated by this model? Hint: You may want to consult
the Internet about what Canada lynx eat.
18. Create a new graph of lynx death rate and hare density. Run
the model again. Paste the graph in here and describe what you
find. Does the behavior of these two parameters make sense?
Why or why not?
19
Then, with the X-Axis line highlighted, click on the green circle
with the plus in it and choose hares for the X-axis.
Do the same thing to set the variable for the Y-axis to be lynx.
When you are done, the Graph Settings page should look like
this:
20
Paste a copy of your graph in here. Describe it verbally and
comment on why it looks the way it does. You may want to go to
the Model > Run Specs window and then change the Sim Speed
to Slow to slow down the speed at which STELLA runs and
draws its graphs so that you can see what is happening here.
hare lynx
lynx lynx hares hares
birth birth
max min max min
rate rate
1 0.25
1.25 0.25
1.5 0.25
1.25 0.25
1.25 0.5
1.25 0.75
21
How does changing hare birth rates impact the system?
Comment both on the amplitude of oscillations and on the sizes
of populations.
21. Try one more experiment, with a hare birth rate of 0.75 and
a lynx birth rate of 0.25. Paste your lynx and hare population
curves as a function of time graph in here and describe the
behavior of this system.
Create a graph of lynx and hare birth and death flows and run
the model again if it does not automatically populate the graph
with data. What has happened to the birth and death flows of
the two populations? Does this make sense given the
population values over time?
22. Finally, using the same birth rates as in part 21, drop the
initial lynx population by 100. What happens? Paste your
populations as a function of time graph in here as part of your
answer.
Logistic growth
22
Next we will experiment with a single population of animals or plants
that is impacted by density dependent factors that lead to a carrying
capacity for the population.
hares(t )−hares(t−dt)
= hare_births - hare_deaths
dt
23
In the mathematical symbolism you were introduced to in the reading
dN
for this module, the left-hand side of this equation is because it is
dt
the change in the population (N) of hares over time, so:
dN
= hare_births - hare_deaths
dt
Now look at the inflows for the hares in the STELLA Equation Viewer
and you will find that:
hare_births = hare_birth_rate*hares
hare_deaths = hare_death_rate*hares.
dN
Since = hare_births - hare_deaths, we would have:
dt
dN dN
= b*N - d*N, or = (b - d)*N
dt dt
dN
= N, which is the equation governing exponential growth.
dt
dN
dt
=λN∗ (
K −N
K )
where N = population size, = net growth rate, and K = carrying
capacity.
24
If we simplify this equation, we see that
dN
dt (
=λN∗ 1−
N
K )
or
dN λN∗N
=λN −
dt K
The N part of the right hand side of the equation represents the new
individuals who are born each year whereas the N*(N/K) part of the
equation represents the individuals who die each year.
25
Easter Island
The history of people and resources on Easter Island has been
presented as a cautionary tale for societies that depend on finite
resources. Perhaps the most famous of these accounts is that of Jared
Diamond, who wrote of the island in his 2005 book Collapse: How
Societies Choose to Fail or Succeed. The island is small (~160 km 2)
and very isolated, and was not colonized by people until at least 400
AD, when a small group arrived from Polynesia, to the west. When
people first arrived, it appears that the island was almost completely
covered by tall palm trees. The early settlers cut down the trees to
clear space for agriculture, and they found the trees useful for
firewood, for constructing boats and houses, and for transporting
large stones they carved into the giant moai — the famous stone
heads that dot the island.
As our final exercise today, we are going to build and experiment with
a model of the Easter Island system, following a scheme laid out by
Bologna and Flores (2008).
1. We will start in much the same way as we did for the lynx and hare
predator-prey model by creating reservoirs for the human population
(N) and the area covered by palm trees (P).
We also need flow arrows that represent the births and deaths of the
human population and flow arrows that represent the growth of trees
and deforestation caused by humans.
Create these elements of your model and then paste what you
have in here before you move on.
26
dN
dt (
=rN 1−
N
βP )
where r is the net growth rate (1% or 0.01) per year, and is a
carrying capacity factor that is multiplied by the area covered by
palms, P, to give the carrying capacity at any given time. You will
recognize that this looks an awful lot like the logistic growth model
we created in the last exercise. The difference is that we previously
used the symbol K to represent the carrying capacity and gave it a
fixed value. Here, since K = P, and since P can change as the human
population cuts down trees, the carrying capacity can change over
time.
What are some physical reasons why the loss of the palms on
the island might have led the human population to decline?
27
dP '
dt (
=r P 1−
P
P0)−αNP
Here, r’ is the growth rate for the palms (0.001 or .1%) per year, P0 is
the initial area (480 km2), and is something called the degradation
factor, which is a measure of the ability of people to degrade their
environment (a higher value = more destruction per person), and is
set by Bologna and Flores to be 2e-6.
dP '
dt (
=r P− r '
P∗P
P0 )
−αNP
Just as we saw in the logistic growth exercise, the first part of the
equation (r'P) represents the new growth every year, so this equation
needs to be incorporated into the growth flow arrow feeding the
palms reservoir.
The middle term on the right-hand side of the equation looks just like
the death flow in the logistic growth equation, but rather than using a
value called K for the carrying capacity, we instead use the value P.
Remember that the island was originally completely forested, so by
definition, the area of the island is the carrying capacity for the trees.
The last term in the equation above is something we have not used
before and represents the amount of deforestation occurring.
The flow arrow representing the loss of palm trees must include both
the natural death of trees associated with the carrying capacity of the
island and the deforestation caused by humans. Incorporate the
appropriate converter circles and connector arrows to finish
out the model. As you think about the equations, pay particular
attention to the signs of the values in the flow governing the
loss of trees. Paste a copy of your completed model graphic in
here.
28
4. Let us fill in any missing values we might still have. Set the:
initial human population = 2
initial palm tree coverage = 480 km2
Before moving on, you might want to let me take a look at your
model to ensure you have all the correct elements.
Before you run the model, make a prediction about what the
human population and the palm area are going to look like over
time. Write that prediction here:
Set the run time to go from 400 to 1800 years, with a time step of 1
year, using Runge-Kutta 4 as the integration method.
5. Run the model and see what happens. Paste a copy of your
graph showing the human population and the palm area in here
(use the Multiscale option for your graph). Describe it verbally
and discuss how it compares to what you predicted.
How well does this behavior fit the classical model of what
really happened on Easter Island?
29
populations over time. This would be a bit tedious, however, so
STELLA allows us to create a set of model runs that it can carry out
and will plot the results side by side on a graph to facilitate easy
comparison of results.
To access this feature, with the Edit Mode ( ) selected from the
main tool bar, double click in the white space on the model page
anywhere you like. The Model Settings window opens up. Click on the
Sensitivity Analysis Setup tab:
Click on the green circle with the plus in it and select one of the
variables you would like to run a sensitivity analysis on. In the
example below, we will use palm growth rate.
30
Next, set the Specific number of runs to something like 5, choose
starting and ending values for your experiments, and click on
Incremental in the Distribution drop down menu. Your window should
look something like this when you are done:
Click on the green check mark. The word S-Run has appeared next to
the Run arrow in the lower left part of the software window:
If you click on this option, STELLA will run your Easter Island model 5
times in a row. The software will not automatically show all 5 runs on
your graph, however, so there is something we still need to do. First,
31
when doing an S-Run, we can only plot one variable at a time on a
graph, so you should make two new graphs, one to hold the palm
population and the other to hold the human population. As you are
creating these, check on the Comparative check box in the Graph
Settings window. This will allow the results of all of the runs to be
displayed on the same graph:
In carrying out the various experiments, let us say that the palm
growth rate cannot exceed 5%, the carrying capacity factor cannot
exceed 80 people per square km (about twice its original value since
20,000 people/480 km2 ~ 40 people/km2), and the degradation factor
can range from half to twice its original value. You might have to
extend the run time in some cases to see the system stabilize.
32
Once you have carried out your different sensitivity
experiments, combine your results to create a best-case
scenario (Note, this will not be an S-Run since you will be using
only one value for each variable, so you will need to check off
the comparative check box in the Graph Settings window for
each graph and also get rid of the last parameter you tested in
the Sensitivity Parameters window of the Sensitivity Analysis
Setup panel). Paste your resulting graph of human population
and palm area in here and write down the values of the four
parameters you experimented with.
Final synthesis
Imagine that your congressional representative must decide how to
vote on a bill that would provide U.S. taxpayer funding for family
planning services in the United States and abroad. Given what you
have learned about population growth today, write a short
letter (maximum 1 page) to your representative in which you
urge that person to vote in a particular way. The more detailed
your letter is regarding the concepts we have covered, the
better.
33
34