CoevolvingPredatorPrey¶
Systems / ODEs / Population dynamics
An eco-evolutionary predator-prey model where a fast-evolving prey trait feeds back on the populations, generating chaos without external forcing.
Definition¶
\[
\begin{aligned}
\dot{x} &= x \left(\frac{a_{1} \alpha \left(- k_{1} x \left(\alpha \delta - \alpha\right) + 1\right)}{\alpha b_{1} + 1} - \frac{a_{3} y}{b_{2} x + 1} - d_{1} \left(- k_{2} \left(\alpha^{2} \delta^{2} - \alpha^{2}\right) + k_{4} \left(\alpha^{4} \delta^{4} - \alpha^{4}\right) + 1\right)\right) \\
\dot{y} &= y \left(\frac{a_{2} x}{b_{2} x + 1} - d_{2}\right) \\
\dot{alpha} &= vv \left(- \frac{a_{1} \alpha \delta k_{1} x}{\alpha b_{1} + 1} - d_{1} \left(4 \alpha^{3} \delta^{4} k_{4} - 2 \alpha \delta^{2} k_{2}\right)\right)
\end{aligned}
\]
Parameters¶
| Symbol | Default | Role |
|---|---|---|
a1 |
2.5 |
predation / conversion rate coefficient |
a2 |
0.05 |
predation / conversion rate coefficient |
a3 |
0.4 |
predation / conversion rate coefficient |
b1 |
6 |
saturation constant of the functional response |
b2 |
1.333 |
saturation constant of the functional response |
d1 |
0.16 |
prey intrinsic death rate |
d2 |
0.004 |
predator intrinsic death rate |
delta |
1 |
trait-asymmetry parameter of the fitness landscape |
k1 |
6 |
coupling strength of the fitness landscape |
k2 |
9 |
coupling strength of the fitness landscape |
k4 |
9 |
coupling strength of the fitness landscape |
vv |
0.33333 |
relative timescale of trait evolution vs population dynamics |
State variables: x, y, alpha
Properties¶
Lyapunov spectrum
TODO — lyapunov_spectrum failed: AttributeError
Kaplan–Yorke dimension
TODO — requires a numeric Lyapunov spectrum
Divergence ∇·f
$\nabla\!\cdot f = 2 d_{1} \delta^{2} k_{2} vv - d_{1} - d_{2}$
constant part shown — state-dependent remainder omitted (too large)
constant part shown — state-dependent remainder omitted (too large)
Equilibria
8 equilibria
0 stable · 8 unstable
0 stable · 8 unstable
Use it in TSDynamics¶
import tsdynamics as ts
system = ts.systems.CoevolvingPredatorPrey()
traj = system.run(final_time=100.0, dt=0.01)
ts.plot(traj)
spectrum = ts.analysis.lyapunov_spectrum(system)
ts.analysis.kaplan_yorke_dimension(spectrum)
Reference¶
Gilpin & Feldman (2017), PLoS Comput. Biol. 13, e1005644
doi:10.1371/journal.pcbi.1005644