Adaptive Dynamics and the Evolution of Virulence
Why doesn’t natural selection make every pathogen either perfectly benign or maximally deadly? The answer is a trade-off: the very transmission that spreads a pathogen is often tied to the harm it does its host, and selection settles on an intermediate, optimal virulence.
Adaptive dynamics and invasion fitness
Adaptive dynamics studies long-term evolution as a sequence of rare mutants trying to invade a resident population sitting at its ecological equilibrium. The key quantity is invasion fitness: the per-capita growth rate of a rare mutant strain in the environment set by the resident. If invasion fitness is positive the mutant spreads and may replace the resident; if negative it dies out. Evolution proceeds as a succession of successful invasions that gradually change the trait — here, the pathogen’s virulence.
For a pathogen introduced into a susceptible host population, invasion fitness is governed by the basic reproduction number: a mutant strain invades the resident’s disease-free environment exactly when its own exceeds one, so selection favours the strain with the largest .
The transmission–virulence trade-off
Consider a standard SIR-type infection with transmission rate , recovery rate , disease-induced host mortality (virulence) , and background mortality . An infected host stays infectious for an average duration , and transmits at rate throughout, so
The crucial biological assumption is that transmission is not free: higher requires higher pathogen replication, which also raises host mortality . We encode this as an increasing, decelerating trade-off function . Now virulence faces opposing pressures. Raising increases the numerator , but it also shortens the infectious period in the denominator by killing the host sooner. The pathogen “wants” high transmission but not at the price of a host that dies before infecting others, so the strain that maximises has some intermediate optimal virulence — neither the avirulence of nor unbounded harm.
Singular strategies and invasibility
The value that maximises is a singular strategy of the adaptive dynamics, found by setting . Finding it is an optimization problem, and because the winning strain is simply the one with the highest , this optimum is both an ESS (uninvadable once established) and an attractor of the evolutionary dynamics. Adaptive-dynamics analyses visualise this with a pairwise-invasibility plot (PIP): for every resident trait on one axis and mutant trait on the other, the plot shades where a mutant can invade. An evolutionarily stable appears where no nearby mutant can invade the resident — the resident’s row lies entirely outside the invasion region.
Worked example: an optimal virulence
Take the common phenomenological trade-off , so that transmission rises with virulence but with diminishing returns. Then
Write and differentiate. Using the quotient rule,
The denominator is always positive, so the optimum occurs where the numerator vanishes: , i.e. , giving
The optimal virulence equals the host’s total background loss rate (recovery plus natural death): the pathogen should harm its host at roughly the rate the host would leave the infectious pool anyway. With , , and , we get and , higher than the of a more benign (, ) or more aggressive (, ) strain.
Simulation
We compute across a range of virulence and locate the optimum numerically, confirming .
R
gamma <- 0.5; mu <- 0.1; a <- 3
R0 <- function(alpha) a * sqrt(alpha) / (gamma + alpha + mu)
opt <- optimize(R0, c(1e-6, 10), maximum = TRUE)
opt$maximum # ~0.6 = gamma + mu
$opt$objective # ~1.936
$
curve(R0, 0, 3, xlab = "virulence alpha", ylab = "R0")
abline(v = gamma + mu, lty = 2)
Python
import numpy as np
from scipy.optimize import minimize_scalar
gamma, mu, a = 0.5, 0.1, 3.0
R0 = lambda al: a * np.sqrt(al) / (gamma + al + mu)
res = minimize_scalar(lambda al: -R0(al), bounds=(1e-6, 10), method="bounded")
print(res.x, R0(res.x)) # ~0.6 (= gamma + mu), ~1.936
0.6000014256626104 1.9364916731023418
Julia
using Optim
γ, μ, a = 0.5, 0.1, 3.0
R0(α) = a * sqrt(α) / (γ + α + μ)
res = optimize(α -> -R0(α), 1e-6, 10.0) # Brent's method on the interval
Optim.minimizer(res) # ~0.6 = γ + μ
-Optim.minimum(res) # ~1.936
Why it matters
The trade-off theory of virulence explains why pathogens are neither harmless nor uniformly lethal, and it warns that interventions can shift the optimum: imperfect vaccines, treatments that extend the infectious period, or crowding that eases transmission can all select for higher virulence. It rests on computing and maximising — the same threshold that, in structured host populations, is obtained as the dominant eigenvalue of the next-generation matrix — and it links pathogen evolution to broader evolutionary game theory, since competing strains playing off transmission against host survival mirror the frequency-dependent contests and competition for coexistence seen throughout ecology.