Rabbits and Foxes: Interacting Populations
A STELLA System Dynamics Modeling In-Class Project
by John C. Mayer
EdGrid and GK12 Programs
University of Alabama at Birmingham
Introduction
A field is home to rabbits and foxes. The field can support 200 rabbits before they start
running out of food and homes. The foxes prey on the rabbits as their principal food
source. Initially, there are 50 rabbits and 5 foxes. As the rabbits and foxes interact, as
rabbits and foxes are born and die, the populations change over time.
Background
Predator-prey models are among the most widely studied pedagogically and
scientifically. We assume you are acquainted with Systems Dynamics Modeling and
STELLA, through having individually built models to satisfy specific descriptions. This
is an opportunity to build a model as a large group. We will be working together as I ask
questions of the class as a whole while each of you builds your version of the model.
Goal
Our goal is to model the changes in the fox and rabbit populations given different rates of
reproduction and predation. Can we identify the parameters to which the model is most
sensitive?
Assumptions
We cannot model everything at once. So we have to make some simplifying assumptions
such as the following:
1. If there were no foxes, rabbits would grow logistically, i.e., limited by food and
space available, with a natural birth rate (0.1 rabbits/rabbit/month) and a natural
death rate (0.04 rabbits/rabbit/month).
2. The field has a logistic carrying capacity of 200 rabbits.
3. If there were no rabbits, the fox death rate (0.06 foxes/fox/month) would exceed
the fox birth rate (0.04 foxes/fox/month), and they would eventually die off.
4. In the presence of rabbits, the fox births are proportional to the number of rabbit-
fox meetings (because the more foxes get to eat, the more they reproduce and the
more their pups survive).
5. In the presence of foxes, there are additional rabbit deaths proportional to the
number of rabbit-fox meetings.
We can change any of these assumptions, and modify our model accordingly, as we
become confident that our model behaves correctly with them.
J. C. Mayer bfa51b7b-af65-4a72-89dc-63d957b06a3b.doc, Page 1 12/4/2011
Building the Model in Stages
When modeling something complex, it is usually a good idea to build up the model in
stages, and analyze its behavior at each stage, rather than try to build the whole thing at
once. One should try to validate the model at each stage before moving on. Ask
yourself, what should be happening and why? Do I understand the causes? The feedback
loops?
Step 1: Modeling the Populations Separately
There is enough information given in the Assumptions Section above to model the rabbit
population, undisturbed by foxes. What stocks, flows, and converters are needed to
model the rabbit population (as if there were no foxes)?
If there were no limitations, rabbit births would be proportional to the rabbit population.
In this case, there are limitations, expressed by the carrying capacity. The rabbit birth
rate should decline from its maximum (of 0.1) to 0 as the rabbit population nears the
carrying capacity of the field. How will you model the rabbit birth flow?
Build the rabbit population model and graph the population over 500 months. (Set DT=1
and use the Euler integration method.) With the given parameters, at what number of
rabbits does the population stabilize?
Why does the rabbit population stabilize? Can you answer in terms of feedback loops?
Similarly, add a separate fox population submodel to your model. Graph the fox
population, too. Does it stabilize? What happens to the fox population over time, and
why?
Save this version of your model as RabbitandFox1.
Step 2: Linking the Populations.
Rabbits and foxes meet in the field. Sometimes the rabbit gets away, and sometimes not.
Rabbit predation deaths, in addition to those natural deaths already in the model, result
when the meeting turns out bad for the rabbit. The number of predation deaths is
J. C. Mayer bfa51b7b-af65-4a72-89dc-63d957b06a3b.doc, Page 2 12/4/2011
proportional to the number of meetings between rabbits and foxes. We do not have direct
access to the number of rabbit-fox meetings, however, that number is related to the
number of foxes and number of rabbits in the field. How do you think the number of
meetings is related to the populations? It might help to consider what would happen to
the number of meetings if the fox population doubled, but all else remained the same? If
the rabbit population doubled, but all else remained the same?
Let us call the constant of proportionality relating the fox and rabbit populations to
predation deaths the prey kill rate. Add this component to your model. How will you
modify the rabbit death flow?
While predation deaths of rabbits reduce the rabbit population, they strengthen the fox
population, making more fox births possible and providing for survival of more pups into
adulthood. We will replace the fox birth rate with a predator birth rate proportional to
the “stand-in” for the number of meetings between foxes and rabbits that you used to
model the rabbit predation deaths above. Make this replacement in your model. How
will you modify the fox birth flow?
Graph the populations with the same parameters, time span, and DT as above. Describe
the population graphs. Do the populations stabilize? Explain why (or why not) in terms
of the feedback loops in the model.
Save this version of your model as RabbitandFox2.
Scatterplot
It is possible in Stella to make a scatterplot of two variables. Using the same parameters,
time span, and DT as above, make a scatterplot of fox population (X) versus rabbit
population (Y). How can you tell from this scatterplot that the populations stabilize over
time?
Save this version of your model as RabbitandFox3.
J. C. Mayer bfa51b7b-af65-4a72-89dc-63d957b06a3b.doc, Page 3 12/4/2011
Sensitivity Analysis
Our goal is to determine to which of the parameters the stabilization of the populations is
most sensitive. What quantities in your model could you change and expect a change in
the populations over time? Make a list.
Try varying one quantity while holding the others constant to see where a small change in
parameter results in a large change in behavior over time. You may need to extend your
time span to 1,000 or 2,000 months. Report the results of your exploration of the model
below.
J. C. Mayer bfa51b7b-af65-4a72-89dc-63d957b06a3b.doc, Page 4 12/4/2011