Predator prey
This page contains a description predator prey model that is used as a running example throughout the text. A detailed description of the dynamics of this system is presented in Chapter 3 - Examples and these dynamics are analyzed in Chapter 4 - Dynamic Behavior. A state space feedback controller is designed in Chapter 6 - State Feedback. This page brings together this material into a single place, to illustrate the application of analysis and design tools for this system. Links to MATLAB scripts are included that generate the analysis and figures described here.
System Description
The predator-prey problem refers to an ecological system in which we have two species, one of which feeds on the other. This type of system has been studied for decades and is known to exhibit interesting dynamics. The figure below shows a historical record taken over 90 years for a population of lynxes versus a population of hares (MacLulich, 1937).
Discrete Time Model
A simple model for this situation can be constructed using a discrete-time model by keeping track of the rate of births and deaths of each species. Letting represent the population of hares and represent the population of lynxes, we can describe the state in terms of the populations at discrete periods of time. Letting be the discrete-time index (e.g., the day or month number), we can write
(2.13) |
where is the hare birth rate per unit period and as a function of the food supply , is the lynx mortality rate and and are the interaction coefficients. The interaction term models the rate of predation, which is assumed to be proportional to the rate at which predators and prey meet and is hence given by the product of the population sizes. The interaction term in the lynx dynamics has a similar form and represents the rate of growth of the lynx population. This model makes many simplifying assumptions -- such as the fact that hares decrease in number only through predation by lynxes -- but it often is sufficient to answer basic questions about the system.
To illustrate the use of this system, we can compute the number of lynxes and hares at each time point from some initial population. This is done by starting with and then using equation (2.13) to compute the populations in the following period. By iterating this procedure, we can generate the population over time. The output of this process for a specific choice of parameters and initial conditions is shown below:
Using the parameters , and in equation~\eqref{eq:modeling:predprey} with daily updates, the period and magnitude of the lynx and hare population cycles approximately match the data in Figure 2.4. While the details of the simulation are different from the experimental data (to be expected given the simplicity of our assumptions), we see qualitatively similar trends and hence we can use the model to help explore the dynamics of the system.
MATLAB files for the discrete time model:
- predprey_discrete.m - discrete time simulation of predator prey model
Continuous Time Model
We now replace the difference equation model used there with a more sophisticated differential equation model. Let represent the number of hares (prey) and let represent the number of lynxes (predator). The dynamics of the system are modeled as
(3.31) |
In the first equation, represents the growth rate of the hares, represents the maximum population of the hares (in the absence of lynxes),\index{carrying capacity, in population models} represents the interaction term that describes how the hares are diminished as a function of the lynx population and controls the prey consumption rate for low hare population. In the second equation, represents the growth coefficient of the lynxes and represents the mortality rate of the lynxes. Note that the hare dynamics include a term that resembles the logistic growth model (3.30) in Chapter 3 - Examples.
Of particular interest are the values at which the population values remain constant, called equilibrium points. The equilibrium points for this system can be determined by setting the right-hand side of the above equations to zero. Letting and represent the equilibrium state, from the second equation we have
(3.32) |
Substituting this into the first equation, we have that for either or . For , we obtain
(3.33) |
Thus, we have three possible equilibrium points :
where and are given in equations (3.32) and (3.33). Note that the equilibrium populations may be negative for some parameter values, corresponding to a nonachievable equilibrium point.
Figure 3.20 shows a simulation of the dynamics starting from a set of population values near the nonzero equilibrium values.
We see that for this choice of parameters, the simulation predicts an oscillatory population count for each species, reminiscent of the data shown in Figure 2.6.
MATLAB files:
- predprey_dynamics.m - MATLAB code to generate the simulation and phase portrait
- predprey.m - system definition (for use by ode45 and amphaseplot)
See the software page for more information on how to run these scripts.
Dynamic Behavior
To assess the stability of the equilibrium point, we evaluate the linearization of the dynamics about the point . A tedious but otherwise straightforward computation gives that the dynamics matrix for the linearized system is given by
The stability of the system can be computed by evaluating eigenvalues of this matrix at different equilibrium points.
To explore how the parameters of the model affect the behavior of the system, we choose to focus on two specific parameters of interest: , the interaction coefficient between the populations and , a parameter affecting the prey consumption rate. Figure 4.17a is a numerically computed {\em ^{parametric stability diagram}} showing the regions in the chosen parameter space for which the equilibrium point is stable (leaving the other parameters at their nominal values).
We see from this figure that for certain combinations of and we get a stable equilibrium point, while at other values this equilibrium point is unstable.
Figure 4.17b is a numerically computed bifurcation diagram for the system. In this plot, we choose one parameter to vary () and then plot the equilibrium value of one of the states () on the vertical axis. The remaining parameters are set to their nominal values. A solid line indicates that the equilibrium point is stable; a dashed line indicates that the equilibrium point is unstable. Note that the stability in the bifurcation diagram matches that in the parametric stability diagram for (the nominal value) and varying from 1.35 to 4. For the predator-prey system, when the equilibrium point is unstable, the solution converges to a stable limit cycle. The amplitude of this limit cycle is shown by the dashed-dotted line in Figure 4.17b.
MATLAB and Mathematica files:
- predprey_bif.mma - Mathematica file for doing symbolic calculations on the model
- predprey.mma - Mathematica file for doing symbolic calculations on the model
- Jac.m - Mathematica file computing the Jacobian of a vector field
- predprey_bif.m - MATLAB code to generate the bifurcation diagram
- predprey.dat - data file used for bifurcation diagram (generated by predprey.mma)
See the software page for more information on how to run these scripts.
State Feedback
Consider the problem of regulating the population of an ecosystem\index{ecosystems} by modulating the food supply. We use the predator--prey model introduced in Section Template:Sec:examples:predprey. The dynamics for the system are given by
We choose the following nominal parameters for the system, which correspond to the values used in previous simulations:
We take the parameter , corresponding to the growth rate for hares, as the input to the system, which we might modulate by controlling a food source for the hares. This is reflected in our model by the term in the first equation. We choose the number of lynxes as the output of our system.
To control this system, we first linearize the system around the equilibrium point of the system , which can be determined numerically to be . This yields a linear dynamical system
where , and . It is easy to check that the system is reachable around the equilibrium , and hence we can assign the eigenvalues of the system using state feedback.
Determining the eigenvalues of the closed loop system requires balancing the ability to modulate the input against the natural dynamics of the system. This can be done by the process of trial and error or by using some of the more systematic techniques discussed in the remainder of the text. For now, we simply choose the desired closed loop eigenvalues to be at . We can then solve for the feedback gains using the techniques described earlier, which results in
Finally, we solve for the reference gain , using equation~\eqref{eq:statefbk:kr} to obtain .
Putting these steps together, our control law becomes
where is the desired number of lynxes. In order to implement the control law, we must rewrite it using the original coordinates for the system, yielding
This rule tells us how much we should modulate as a function of the current number of lynxes and hares in the ecosystem. Figure 6.7a shows a simulation of the resulting closed loop system using the parameters defined above and starting with an initial population of 15 hares and 20 lynxes.
Note that the system quickly stabilizes the population of lynxes at the reference value (). A phase portrait of the system is given in Figure 6.7b, showing how other initial conditions converge to the stabilized equilibrium population. Notice that the dynamics are very different from the natural dynamics (shown in Figure 3.20).
MATLAB files:
- predprey_control.m - MATLAB code to compute controllers via eigenvalue placement
- predprey.m - system definition (for use by ode45 and amphaseplot)
- predprey_rh.m - auxiliary files that define control law
See the software page for more information on how to run these scripts.