Toolyard

Predator and Prey Cycles: The Lotka–Volterra Equations Explained

Why predators and prey cycle

Picture a field of rabbits and foxes. When rabbits are plentiful the foxes eat well and raise many young, so the foxes increase. Soon there are so many foxes that they eat rabbits faster than rabbits are born, and the rabbits decline. With little to eat, the foxes then starve and decline too, which lets the rabbits recover, and the cycle starts again. Each population drives the other, and the fox peak always follows the rabbit peak.

The Lotka–Volterra equations

Alfred Lotka in the United States and Vito Volterra in Italy wrote down the same model independently in the 1920s; Volterra was trying to explain why the share of predatory fish in the Adriatic catch had risen when fishing stopped during the First World War. With R prey and F predators:

dR/dt = aR − bRF   and   dF/dt = cbRF − dF

  • a is the prey birth rate. With no predators the prey grow exponentially.
  • b is the hunting rate: the number of meetings between predator and prey is proportional to R × F, and each meeting kills a prey with a fixed chance.
  • c is how many predators are born for each prey eaten.
  • d is the predator death rate. With no prey the predators die out exponentially.

Equilibrium and period

Both populations stop changing when dR/dt = 0 and dF/dt = 0. Besides the trivial point where both are zero, that happens at

R* = d ÷ (cb)   and   F* = a ÷ b

The equilibrium number of prey depends only on the predators' parameters, and the number of predators only on the prey's. Start anywhere else and the numbers cycle around this point forever. Small cycles have a period of

T ≈ 2π ÷ √(ad)

and larger cycles take longer. The equations also keep one quantity constant along each cycle, V = cbR − d ln R + bF − a ln F, which is why each run traces a closed loop: the cycles neither grow nor shrink, and their size depends only on where they started.

The phase plot

Plotting predators against prey, instead of both against time, turns the cycle into a loop around the equilibrium. Moving around it counterclockwise: prey increase while predators are few (bottom), predators increase while prey are many (right), prey crash when predators are many (top), and predators crash when prey are few (left).

A worked example

The simulation's equations start with a = 0.04 births per rabbit per day, a hunting success of 1 on a field of 2,601 patches so b = 1 ÷ 2,601 = 3.84 × 10⁻⁴, c = 0.25 fox births per rabbit eaten, and d = 0.0125 fox deaths per fox per day.

  1. R* = 0.0125 ÷ (0.25 × 3.84 × 10⁻⁴) = 130 rabbits.
  2. F* = 0.04 ÷ (3.84 × 10⁻⁴) = 104 foxes.
  3. T = 2π ÷ √(0.04 × 0.0125) = 2π ÷ 0.0224 = 281 days for small cycles.
  4. Starting from 100 rabbits and 50 foxes: dR/dt = 0.04 × 100 − 3.84 × 10⁻⁴ × 100 × 50 = 4 − 1.92 = +2.1 rabbits a day, and dF/dt = 0.25 × 3.84 × 10⁻⁴ × 100 × 50 − 0.0125 × 50 = 0.48 − 0.63 = −0.14 foxes a day. Rabbits rise and foxes fall: the run starts at the bottom left of the loop.

Adding a carrying capacity

Real prey cannot grow without limit even with no predators. Replacing aR with aR(1 − R ÷ K) makes the prey level off at a carrying capacity K. The equilibrium rabbits stay at R*, the foxes settle at a(1 − R* ÷ K) ÷ b, and the cycles now spiral inward and die away to that steady state. With K = 1,000 in the example, the foxes settle at 104 × 0.87 = 90. If K is smaller than R*, the rabbits can never become common enough to feed the foxes, and the foxes die out.

Animals instead of equations

The simulation's other model follows every animal. Rabbits wander, eat the grass on their patch, which then takes time to regrow, and breed; foxes wander, catch rabbits they meet, and die if they go too long without eating. Nothing in the rules says the numbers should cycle, yet they do, because the same feedback is at work. With the default settings the rabbits peak at around 300 and the cycles are irregular, roughly 200 days apart; in fifteen test runs of 3,000 days, neither species died out.

Using the simulation

In the Predator and Prey Population Simulator, things to try:

  • Watch the phase plot: the yellow run circles the point where the blue and orange lines, R* and F*, cross.
  • In the equations, start at 130 rabbits and 104 foxes: nothing changes. Start further away and the loop gets bigger and slower.
  • Set a carrying capacity and watch the loop spiral in.
  • With the animals, lower the hunting success to 0.3: the foxes cannot catch enough and die out, and the grass then limits the rabbits.
  • Set the grass regrowth time to 0, unlimited grass: the rabbits boom, the swings grow far larger, and the foxes tend to die out in a crash.

What the model assumes

  • Mass action: kills are proportional to R × F, as if every animal could meet every other equally often. Each fox would eat ever more rabbits as rabbits become more common, with no limit.
  • Constant rates: birth and death rates do not change with season, age or crowding (except for K).
  • Instant response: a rabbit eaten turns at once into a fraction of a new fox, with no gestation or growing up.
  • Continuous numbers: the equations allow 0.01 of a fox; real animals come in whole numbers.
  • One predator, one prey, in a closed area with no migration.
  • In the animal model, births are random events with the chances set by the sliders, each birth halves the parent's food store, and the field wraps around at its edges.

Edge cases

  • No predators: the prey grow exponentially in the equations, or up to K; with animals the grass limits them.
  • No prey: the predators starve. With animals they live on their food stores for a while, then all die.
  • Starting exactly at the equilibrium: the equations stay still. With animals, chance alone moves the numbers off it and a cycle starts.
  • K below R*: the predators cannot be sustained and die out.
  • Very large cycles: the equations dip to tiny fractions of an animal and recover; the animals at those lows die out.
  • A full field: births stop at 4,000 rabbits and 1,500 foxes to keep the simulation running.

Where the model stops being right

  • Predators get full. A fox can only eat so many rabbits a day, however many there are. C. S. Holling called this a type II functional response; with it, and a carrying capacity, enriching the prey's food can make the cycles larger until a population crashes, the "paradox of enrichment" described by Michael Rosenzweig in 1971.
  • Extinction is real. In Georgii Gause's experiments in the 1930s, the predatory protist Didinium ate every Paramecium in the tube and then starved. Predator and prey only kept going when some prey could hide or new ones arrived.
  • Space matters. Carl Huffaker's mites on oranges, in 1958, cycled only when the oranges were spread out so prey could escape to patches the predators had not yet found. Patchy landscapes let populations persist that would die out in a well-mixed box.
  • Real cycles have more causes. The Canadian lynx and the snowshoe hare rise and fall about every ten years in the Hudson's Bay Company's fur records, but field studies found the hare cycle is driven by food and by the stress of predators on breeding, not by being eaten alone.
  • Many species. Most predators eat several kinds of prey and switch to whichever is common, which damps the cycles.

Related tools

The Bacterial Growth Simulator shows a single population growing exponentially and leveling off at its carrying capacity, and the Cell Doubling Time Calculator works out how fast it doubles, as in How to Calculate Cell Doubling Time. The Natural Selection and Population Genetics Simulator shows how predation changes the genes of a population, and the Epidemic Spread Simulator: SIR and SEIR applies the same mass-action idea to an infection spreading through a town.

Tools in this guide

More guides