Math Insight

Controlling a rabbit population



Controlling rabbit population introduction.

More information about video.

Trouble is brewing on Foxless Island. It appears that a family bought a couple of baby rabbits for their children, but then let them loose when their children ended up playing too rough with the bunnies. Unfortunately, without the presence of any predators on the island, the rabbit population is now exploding. As head of the Foxless Animal Control Team (FACT), you've been commissioned to develop and implement a plan to control the rabbit population.

It turns out many people, especially children, like having at least some rabbits around, so FACT has been asked to find a way to maintain a steady but small population of rabbits on Foxless Island. You calculate that a population of about a thousand rabbits would allow occasional rabbit sightings while still minimizing the damage to gardens. The trick is to develop a rabbit management plan that would ensure such a moderately sized population.

The growth model

A critical first step, you realize, is to develop a mathematical model of how the rabbit population is growing. You employ a team of counters to sample the rabbit population each month in various locations across the island. They report back that the rabbit population seems to be increasing by 20% each month. Based on this information, you postulate the following model for rabbit population growth.

You let the variable $p_t$ be the number of rabbits in month $t$. The change in rabbit population from month $t$ to month $t+1$ is $p_{t+1}-p_t$, which you set equal to 20% of the population $p_t$ at the beginning of the month: \begin{gather} p_{t+1}-p_t = 0.2 p_t. \label{freemodelnoparameters} \end{gather}

After creating this model, you decide to replace the fixed fraction of 0.2 with a parameter $r$ that you could change, to explore what would happen if the rabbit counters were a bit off in their estimate of the growth rate. You end up with the model \begin{align} p_{t+1}-p_t &= r p_t \label{freemodel}\\ p_0 &= p_0,\notag \end{align} where the second line simply reminds you that you have to specify the initial population size $p_0$. With this convention, the time index $t$ measures months after this initial month.

You have evidence that the parameter $r$ is around 0.2, but you recognize you have to account for the fact that it might be different from 0.2. You have no idea what to use for the initial population size $p_0$, other than that you can tell there are quite a few more than a thousand rabbits around. One reason for making a model is that it will allow you to explore predictions for different values of $r$ and $p_0$.

Initial planning for controlling rabbit population.

More information about video.

Control strategies

Leaving the rabbit population to grow rapidly according to equation \eqref{freemodel} is definitely not a viable option. (Try the function iteration applet with $f(x)=1.2x$ to see what happens when a value increases by 20% at each iteration; the result is exponential growth.) The island is beginning to be overrun by rabbits. Despite the objections of the children, you will implement a control strategy that will involve trapping rabbits or hunting rabbits to reduce their numbers. Your problem is to figure out how many rabbits you should remove each month in order to maintain a stable population of around a thousand rabbits.

1. Removing a fixed number

Your first idea is to remove a fixed number of rabbits each month. This idea seems reasonable. If you could remove the right number of rabbits each month, exactly matching the number of rabbits produced each month, then the population should stabilize and you'd have the cure for the rabbit problem.

One difficulty is that you don't know how many rabbits you should remove each month. However, you are resourceful and realize you can just let this number be the parameter $h$ (for “harvest rate”). Then, you can vary the harvest rate $h$ until you get the mathematical model to do what you want. Your revised model is \begin{align} p_{t+1}-p_t &= r p_t-h, \label{fixedremoval}\\ \text{change} &= \text{reproduction} - \text{harvested} \notag \end{align} coupled with the initial condition, $$p_0 = p_0.$$

Your task is to determine if this control strategy is a viable approach for maintaining a stable population of around a thousand rabbits. However, you must keep in mind that you can't determine the initial population size $p_0$ and reproduction rate $r$ exactly. Since you can't be confident in the values of either of these parameters, your solution has to be able to handle uncertainty in these parameters. Small changes in $p_0$ and $r$ shouldn't cause dramatic changes in the end result.

Based on this reality, you formulate the following criteria for a strategy to be an acceptable solution to the rabbit problem.

  1. The proposed rabbit control strategy must be represented by a discrete dynamical system similar to \eqref{fixedremoval} that leaves rabbit reproduction rate $r$ and initial population size $p_0$ as unknown parameters.
  2. The model can contain control parameters (such as $h$) that you can set to whatever value you think will work.
  3. But (and here's the hard part) the control parameters must be fixed to numerical values before you implement the control strategy. The parameters cannot be adjusted based on the actual values of $r$ and $p_0$. This requirement reflects the reality that you cannot determine $r$ and $p_0$ exactly, so you cannot propose to adjust the strategy based on these unknown values.
  4. Once the control parameters are fixed, the model must show that the rabbit population is maintained close to 1000 rabbits, even for different combinations of values of $r$ and $p_0$. (You demand robustness to these parameters.)
Initial calculations

From your experience with discrete dynamical systems, you realize what you are looking for is an equilibrium that is around 1000. Calculate the equilibrium of this model. If you knew exactly what $r$ was, could you find a value of $h$ to make the equilibrium be 1000? (Unfortunately, this value of $h$ is likely to depend on $r$.)

Of course, the problem is that you don't know the exact value of $r$; you just have your best guess that $r$ is close to 0.2. If $r$ were really 0.2, what value of $h$ would make the equilibrium be 1000? Imagine that you fix $h$ to be that “best guess” value. Now, check what happens if, unknown to you, it turns out that $r=0.22$ or $r=0.18$. Since you don't adjust $h$ to account for this variation in $r$, then the equilibrium will not be 1000 when $r=0.22$ or $r=0.18$. But, maybe it is still close enough to 1000. Even if the rabbit population ended up being 500 or 2000, that would be close enough to the (fairly arbitrary) ideal population size of 1000.

Use these ideas to check how robust the equilibrium is to (unknown) variations in $r$. Can you find a value of $h$ so that the equilibrium stays between 500 and 2000 even if $r$ ranges from 0.18 to 22? How about much larger ranges of $r$ say from 0.1 to 0.3?

Testing out the model

Your initial calculations with the equilibria made you pretty optimistic that your rabbit control strategy is going to work out just fine. You're confident that you should be able to find a value of $h$ that will get that rabbit population down to a reasonable number. Although you are tempted to go out and implement the harvesting strategy forthwith, you remember another benefit of having a model. You can use the mathematical model to test out the proposed strategy using different assumptions regarding the parameters, without risking embarrassment if they fail. You realize it would be wise to check out the results before proceeding to implement the strategy. Besides, you have a nagging feeling that there was another parameter whose value you were uncertain of. You just can't remember what it is.

Since you aren't sure how to solve the dynamical system \eqref{fixedremoval} to get a formula for $p_t$, you decide to build a computer program that will iterate the model for you and calculate all the values of $p_t$ starting from an initial condition $p_0$. Oh, that was the other unknown parameter you couldn't think of. You have no idea what the initial population size $p_0$ is. Writing the computer program helped you remember that you needed a number for $p_0$ to calculate the population sizes at later times. No matter, in the applet you created below, you left a box to enter a value of $p_0$, as well as boxes to put in values for the parameters $r$ and $h$. You even coded up your calculations for the equilibrium, so the applet shows the equilibrium for any value of $h$ and $r$.

Feeling pretty smug that you've got everything under control, you are ready to test your model and demonstrate how well this harvesting strategy will work to control the rabbit population. The applet you created to simulate model \eqref{fixedremoval} is below. Test it out to explore the behavior of the model. Everything will work out well, right?

The dynamics of a population with harvesting of a fixed number each time period. The population size $p_t$ in time period $t$ of a species that is being harvested (hunted) is plotted for 100 time periods. At time 0, the population size is $p_0$, which you can change by dragging the blue dot or typing a number in the box. In each time period, the population grows by a factor of $r$ but $h$ individuals are harvested and removed from the population, so that the dynamics of the population size follow $p_{t+1}-p_t = rp_t-h$. (You can change $r$ and $h$ by typing numbers in their boxes.) The equilibrium $p_t=E=h/r$ is plotted by the horizontal cyan line. You can explore how the evolution of the population size has very different behavior depending on the relationship between $p_0$ and $E$. To set the initial conditions to be exactly the equilibrium, you can enter $E$ in the box for $p_0$. You may notice something that doesn't make sense with this model. You can zoom the vertical axis in and out by clicking the buttons with arrows.

More information about applet. Video introduction.

Hmm, the applet isn't showing the results you expected. The equilibrium values are working out like you calculated. And, if you start with an initial population size $p_0$ exactly at the equilibrium, the population stays there as it should. But, what happens if you start just above or below the equilibrium? Or, what happens if you start exactly at the equilibrium, but then change $r$ by a tiny bit? What's going on?

You realize that just knowing values of equilibria isn't enough to figure out what will happen. An equally important concept is that of the stability of the equilibria. How does the concept of stability explain your results?

Besides not doing a good job controlling the rabbit population do you notice any other problem with this model? Does the model ever output values of $p_t$ that just don't make any sense? What's wrong with the model that makes it give such stupid answers?

You are glad you decided to test the model before trying to implement this rabbit control strategy. Now, no one needs to know the disastrous plan that you nearly proposed.

2. Removing a proportional number

Your mathematical analysis has convinced you that model \eqref{fixedremoval} is not a viable strategy. You hypothesize that the problem was the fact that the removal rate $h$ was constant independent of the population size $p_t$. In order to fix the problem, you decide you should allow the removal rate to depend on the population size, replacing the fixed rate $h$ with a function $h(p_t)$ of the population size $p_t$. Your new model is \begin{gather} p_{t+1}-p_t = r p_t-h(p_t). \label{variableremoval} \end{gather}

The new model \eqref{variableremoval} is much more complicated than the original model \eqref{fixedremoval}. Specifying a function $h(p_t)$ requires that you decide how the removal rate should adjust based on the population size. You decide you should remove more rabbits when the population is high and fewer rabbits when the population is low. A simple way to accomplish this variable control is to make $h(p_t)$ be proportional to $p_t$, letting \begin{gather} h(p_t)=b p_t, \label{proportionalremoval} \end{gather} where $b$ is the proportionality constant.

Now, you don't have the parameter $h$ any more, but you just have the parameter $b$ (since the evolution rule is now $p_{t+1}-p_t = r p_t-bp_t$). Is this a step in the right direction? It seems like it should cure the problem of getting absurd results from the model, since the number of rabbits harvested will diminish when the population size gets small.

For starters, you calculate the equilibria…. That's funny, as long as $b$ is not exactly the same as $r$, the situation doesn't look good. If $b \ne r$, what are the equilibria of the system?

But, you don't give up so easily. This model should be perfect if you set the harvesting coefficient $b$ to match the growth rate parameter $r$. Then, the harvesting should exactly counteract the growth of the rabbits. If $b=r$, what are the equilibria? Is 1000 one of the equilibria in this case? But, it doesn't seem like there should be anything special about the number 1000 when $b=r$. If we exactly counterbalanced the growth with the harvesting, shouldn't there be a lot of population sizes that would be equilibria?

OK, the equilibria calculations are quickly becoming too confusing. You're not sure if the model \eqref{proportionalremoval} is going to work out right. To hedge your bets, you decide to see what happens if you combine this new model of proportional harvesting with the first model of fixed harvesting. Why not include both together, giving a harvesting function of \begin{gather} h(p_t) = a + bp_t, \label{affineremoval} \end{gather} where now you have two parameters $a$ and $b$? (This model gives the evolution rule $p_{t+1}-p_t = r p_t-a-bp_t$.) As long as $b \ne r$, you can find the equilibrium. But, you are not convinced that this model is gong to work.

You decide it's time to build another computer program to see what's going on in this case. You write the below applet to include model \eqref{affineremoval}. That way, you can set $a=0$ to examine the proportional model \eqref{proportionalremoval} or look at the more general case. (You could even set $b=0$, which repeats the original model \eqref{fixedremoval}, only that the parameter $h$ from that original model is now called $a$.) For the cases where you can figure it out, you program the value of the equilibrium into the applet.

For starters, use the below applet to explore the behavior of model \eqref{variableremoval} with proportional removal given by equation \eqref{proportionalremoval}. To make $h(p_t)$ proportional to $p_t$, enter zero in the first box after “$h(p_t)=$” and enter a number for $b$ in the second box after “$p_t \cdot$”. (Make sure the checkbox “linear h” is checked so that these two boxes are available.)

Don't worry about the fact that the model gives fractional rabbits.

The dynamics of a population with variable harvesting each time period. The population size $p_t$ in time period $t$ of a species that is being harvested (hunted) is plotted for 100 time periods, and the values $p_t$ are shown in the chart at the right. At time 0, the population size is $p_0$, which you can change by dragging the blue dot or typing a number in the box. In each time period, the population grows by a factor of $r$ but $h(p_t)$ individuals are harvested and removed from the population, so that the dynamics of the population size follow $p_{t+1}-p_t = rp_t-h(p_t)$. You can change $r$ by typing a number in its box. When the linear h checkbox is checked, the function $h$ is of the form $h(p_t)=a+bp_t$, and you can change the coefficients $a$ and $b$ by typing numbers in their boxes. When the linear h checkbox is unchecked, you can type in an arbitrary function for $h(p_t)$, typing p_t for $p_t$. For the linear $h$, the equilibrium value $p_t=E=a/(r-b)$ is plotted by the horizontal cyan line. For the general form of $h$, equilibria may exist, but they are not calculated. You can zoom the vertical axis in and out by clicking the buttons with arrows.

More information about applet. Video introduction.

With the applet, you can double check your results. Start with the case $a=0$, focusing on the proportional model \eqref{proportionalremoval}. When $b \ne r$, you were able to calculate a single, boring equilibrium. You can quickly check out what happens in that case. When $b \ne r$, do you control the rabbits to a reasonable population, does the rabbit population still explode, or does it crash to zero? How can you tell which will happen based on $b$ and $r$.

More interesting, though, was the case when $b = r$ (still keeping $a=0$). That was the case where the model seemed hopeful, as you've set the harvesting to match the growth. In that case, if you start with a population of around $p_0=1000$ rabbits, will the population stay there? Is it sensitive to the initial condition $p_0$ like the first model? In other words, do small changes in $p_0$ lead to large deviations in the final result? Also, if the current population size $p_0$ is already much larger than 1000, will this strategy work to bring the population size down to around 1000?

How about robustness to the value of the parameter $r$? If you set $b=r$, but then change $r$ slightly without changing $b$, what happens? Do the results change dramatically when you change $r$ a little bit or do you just get modest changes?

The model does not seem like a good candidate for a robust solution to the rabbit problem. Can you find a good solution by allowing both $a$ and $b$ to be nonzero?

If you are really clever, you might find a case that seems to work OK by making $a$ be negative. That would corresponding to dropping off a certain number of new rabbits on the island each month! But, that's a little silly, adding rabbits to Foxless Island as a part of a strategy to reduce the population. I'm not sure that folks would like that idea.

3. A challenge

You should have discovered that neither of the above two strategies gives a robust solution to the rabbit problem by keeping a stable population size of around a thousand rabbits (unless you allow $a$ to be negative). If you found a solution that looked good, a small change in $r$ should have made the population either explode or crash to zero. (At least for the second model with $h(p_t)=bp_t$, it crashed in a realistic way.)

Your challenge is to find a new form of the function $h(p_t)$ that works better. As you might imagine, there is not a unique solution that will work; many different functions may work adequately. If you like, you can use your own intuition and explore with the above applet to search for such a function. To enter an arbitrary function $h(p_t)$, you can uncheck the “linear h” checkbox in the applet. This will give you one large box in which to type your function $h(p_t)$. You'll need to enter $p_t$ as p_t.

Here we'll give some hints to help you think through a way to build a function $h(p_t)$ that might do the job.

  • First of all, having a constant term in $h(p_t)$ is just a bad idea. In other words, the $h$ in model \eqref{fixedremoval} or the $a$ in model \eqref{affineremoval} should not be there. If there are no rabbits out there, should you be removing them?
  • A linear removal rate as in model \eqref{proportionalremoval} is a step in the right direction. At least this with this model, the number of rabbits removed is larger when the population is larger. However, it is not enough. The reproduction of rabbits is also larger when the population is larger, so the best you can do is exactly balance the reproduction of rabbits (by setting $b=r$), but that is not robust to changes in $r$ nor does it shrink the population size if you start out with way too many rabits.
  • Can you come up with a function for $h(p_t)$ that grows faster than the reproduction of rabbits when the population size gets large? You want the function $h(p_t)$ to be smaller than the reproduction of rabbits when the population size is too small and to be larger than the reproduction of rabbits when the population size is too large, balancing reproduction when the population size is around 1000 rabbits.
  • Thinking about equilibria is a good way to start. Should $p_t=0$ be an equilibrium? If there aren't any rabbits, should you harvest rabbits? I suppose you could drop off new rabbits in that case (like with model \eqref{affineremoval} with negative $a$), but you don't want to resort to that. What other equilibrium do you want?
  • Although you can do analytic calculations of equilibria with equations, you can also approach the equilibrium problem graphically. A graphical approach might help you come up with the right form of a harvesting function. (You may want to convert the model to function iteration form by adding $p_t$ to both sides of equation \eqref{variableremoval}.)
  • Even more useful might be cobwebbing to predict how the model will be behave. (Again, you'll want to model in function iteration form.) Cobwebbing will also help you make sure the key equilibrium is stable.
  • If you just fiddle around with the different models using the above applet, you might find that the population immediately blows up or crashes to extremely large or small numbers. If this happens, don't give up. How can you tweak your function $h(p_t)$ so that it has less of a drastic effect? As an aid, the applet does try to calculate equilibria. If the resulting equilibria are way too large or too small, try slowly changing the numbers in your model to make the equilibria move to more reasonable values.

If you find a function $h(p_t)$ that gives a stable population size of around a thousand rabbits, explain how you came up with that function. For what ranges of $p_0$ and $r$ does it give reasonable values? Explain why your function works. Does it seem like a reasonable strategy to test out? Is it perfect or does it have some flaws? Do you feel confident enough to implement this strategy?

If you cannot find a function $h(p_t)$ that gives a stable population of around a thousand rabbits, explain what you tried and why your attempts didn't work. Given that you couldn't get your model to give you a reasonable answer, what are you going to do about the rabbits?


The controlling a rabbit population project page gives instructions for writing up a project report based on this exploration.