Lotka-Volterra Two Species Model

Two Species Models

The models we have discussed so far (Malthus and Logistic) are single species models. Many of the most interesting dynamics in the biological world have to do with interactions between species. Mathematical models which incorporate these interactions are required if we hope to simulate these dynamics.

One of the first models to incorporate interactions between predators and prey was proposed in 1925 by the American biophysicist Alfred Lotka and the Italian mathematician Vito Volterra. Unlike the Malthusian and Logistic models we have previously seen, the Lotka-Volterra model is based on differential equations.

Differential Equations

For our purposes, the best way to understand differential equations is to contrast them with the now familiar difference equations. When using difference equations the population sizes are computed at discrete points in time. These results can be likened to snapshots, we observe the situation at points in time but do not observe what happens between snapshots. In the difference equation models we've discussed so far, the snapshots have been taken at the beginning of each time period, often years.

In constrast, differential equation models strive to observe the population at every moment in time. They accomplish this by trying to find a formula X(t) for the population where t can be any value, not necessary an integer. In our analogy, the solution to a differential equation is like watching an event unfold, observing every nuance of its evolution.

In practice, this lofty goal of differential equations is not fully met. This is because of the difficulty of finding the formulas that actually solve differential equations. What normally happens instead is that a numerical approximation of the differential equation's solution is found. This is routinely done by converting the differential equation into an "equivalent" difference equation, and solving that. (For details, see any undergraduate differential equations text. Most modern calculus text also discuss numerical solution of differential equations.) The "equivalent" difference equation is usually solved using very small time steps. The result is like a motion picture; the illusion of smooth motion is obtained while in fact we are seeing a sequence of snapshots.

Instead of giving us information on how much something changes over the course of one full time period, differential equations give us a formula for the derivative (from calculus) of some interesting quantity like a population level. Fortunately for us, the derivative is just a fancy notion for the change in a quantity per unit time. So, as far as we're concerned, we can treat the formula for the derivative in exactly the same manner as we treated the formula for change in the difference equation case. The only change is that in the differential equation case it is a good idea to use small time steps rather than the time step of 1 typically used in difference equation models.

Displaying Differential Equations

As those of you who have calculus in your backgrounds may remember, the derivative has many different notations. If X(t) is a function, the derivative of X(t) can be represented in a fraction-like form dX/dt or as X'(t). Another common notation is to put a single dot over the function name. We will use the fraction-like form.

The common way of indicating a differential equation is to place the derivative symbol to the left of an equal sign and the formula for the derivative to the right. For example, a differential equation form of the Logistic model would take the form

dX/dt = r*X*(1-X/K).

To solve this model with Stella we note that both sides of this equation represent the change in population size, just as X(i+1) - X(i) does in the difference equation models. Consequently, the right hand side of the differential equation is precisely the formula that should appear in the flow in the Stella model. Note that this gives us exactly the same model as we derived in the Logistic difference equation case. We can use either the bi-directional single flow version or the better birth/death two flow version.

Just as with difference equation models, differential equation models require initial conditions. These are indicated in precisely the same way as for the difference equation models discussed earlier.

This works for any differential equation model, simply use the right hand side of the differential equation as the formula for the flow setting. Let me emphasize again that the only difference is that differential equation models should generally be solved with small time steps, while difference equation models should be solved with time steps of 1.


  1. Run the Logistic Stella model developed earlier under several different time steps. Does the overall behavior of the model seem sensitive to the time step?
Finding equilibrium populations (a.k.a. steady states) is just as important in the differential equation case as it is in the difference equation case, and just as easy. To find the equilibria simply set the derivative equal to zero (indicating no change) and solve the resulting algebraic (no derivatives) equation for the equilibrium. In the case of the logistic example given above, the equilibria are exactly the same for the difference equation models and the differential equation models.


The Lotka-Volterra model describes interactions between two species in an ecosystem, a predator and a prey. This represents our first multi-species model. Since we are considering two species, the model will involve two equations, one which describes how the prey population changes and the second which describes how the predator population changes.

For concreteness let us assume that the prey in our model are rabbits, and that the predators are foxes. If we let R(t) and F(t) represent the number of rabbits and foxes, respectively, that are alive at time t, then the Lotka-Volterra model is:

dR/dt = a*R - b*R*F
dF/dt = e*b*R*F - c*F

where the parameters are defined by:

The Stella model representing the Lotka-Volterra model will be slightly more complex than the single species models we've dealt with before. The main difference is that our model will have two stocks (reservoirs), one for each species. Each species will have its own birth and death rates. In addition, the Lotka-Volterra model involves four parameters rather than two. All told, the Stella representation of the Lotka-Volterra model will use two stocks, four flows, four converters and many connectors.


  1. Split the rabbit's differential equation into the births part and the deaths part.
  2. Do the same for the fox's equation.
  3. Using the following parameter values, write down the differential equations for the Lotka-Volterra model and find all equilibrium points. This will involve solving two equations for two unknowns (namely R(*) and F(*)). HINT: this model produces two steady states, one of which should be unsurprising.
  4. Optional: Try to find expressions for the Lotka-Volterra steady states in terms of the parameters. In other words, try to find formulas for R(*) and F(*) without plugging in specific values for the parameters.
  5. Create a Stella model for the Lotka-Volterra model. Use the parameter values given above as values for the four converters in your model. Try various initial conditions for the rabbits and fox populations; choose some to be near the equilibria you determined above, and have some be far away. Use different time steps and different running times. Which equilibrium is stable, unstable?
  6. Try both the usual time series graph and the scatter graph to examine the model output. A scatter plot of rabbit versus fox population is particularly interesting. To produce such a graph pull down the graph icon, place it somewhere in the model, double click on the graph when it appears and select the scatter plot option. This will require you to choose two quantities to plot. Pick the rabbit and fox populations. You should get some interesting pictures if you let the model run long enough.

Analysis of Lotka-Volterra

The Lotka-Volterra model is one of the earliest predator-prey models to be based on sound mathematical principles. It forms the basis of many models used today in the analysis of population dynamics. Unfortunately, in its original form Lotka-Volterra has some significant problems. As you may have noted in your experiments, neither equilibrium point is stable. Instead the predator and prey populations seem to cycle endlessly without settling down quickly. It can be shown (see any undergraduate differential equations book for details) that this behavior will be observed for any set of values of the model's four parameters. While this cycling has been observed in nature, it is not overwhelmingly common. It appears that Lotka-Volterra by itself is not sufficient to model many predator-prey systems. Context specific information must be added.