Island-island migration
Two populations that exchange migrants meet at a common frequency set by the two migration rates.
Read first: Continent-island migration
Both islands move
In the continent-island model only the island changes. Here two populations exchange migrants, so both change. The Island-Island module follows one locus with alleles A and a in two infinitely large populations. Drift, selection and mutation are absent. Each generation a fraction m₁ of island 1 is replaced by migrants from island 2, and a fraction m₂ of island 2 is replaced by migrants from island 1.
The updates are p₁(t + 1) = (1 − m₁)p₁(t) + m₁p₂(t) and p₂(t + 1) = (1 − m₂)p₂(t) + m₂p₁(t). The defaults are p₁ = 0.8, p₂ = 0.2 and m₁ = m₂ = 0.05.
Two islands meet in the middle
The difference shrinks, the weighted mean stays
Subtract the two updates. The difference p₁ − p₂ is multiplied by λ = 1 − m₁ − m₂ every generation. With the defaults λ = 0.9, so the difference falls from 0.6 to 0.54 in generation 1, and it halves every ln(0.5) / ln(0.9) = 6.6 generations. One-way flow at m = 0.05 needs 13.5 generations for the same halving. Two-way flow is about twice as fast because both islands move toward each other.
The meeting point comes from a quantity that migration never changes. It is m₂p₁ + m₁p₂, the two frequencies weighted by the opposite migration rates. Setting both islands equal to p_eq in that quantity gives p_eq = (m₂p₁ + m₁p₂) / (m₁ + m₂). With equal rates this is the plain average of the two starting frequencies, (0.8 + 0.2) / 2 = 0.5.
The two results separate speed from destination. The speed depends on the sum m₁ + m₂. The destination depends on the ratio of the rates. The runs m₁ = m₂ = 0.05 and m₁ = 0.01 with m₂ = 0.09 both have a sum of 0.10 and λ = 0.9, so they close the gap at the same pace. They end at 0.5 and 0.74.
Unequal migration rates
Exercise
Make the migration unequal
Open the module and run the defaults. Then set m1 0.01 and m2 0.09 and run again.
What to expect. Island 1 stays near 0.8 and island 2 climbs to meet it. Both end at 0.7400, not 0.5000. The sum m₁ + m₂ is 0.10 in both runs, so the speed is the same (λ = 0.9) and only the destination moves.
Open the walkthrough step →Special cases and overshoot
Set m₁ = 0 and island 1 never receives migrants, so it stays at 0.8. It is a continent. Island 2 with m₂ = 0.05 then passes 0.5 in generation 14 (0.5074) and reaches 0.7964 in generation 100, the same numbers as the continent-island page.
Set m₁ = m₂ = 0.5 and λ = 0. Both islands read 0.5000 from generation 1, because each generation replaces half of each gene pool with the other half and the mixture is already even.
Set m₁ + m₂ above 1 and λ turns negative. With m₁ = 0.8 and m₂ = 0.6, λ = −0.4. Island 1 reads 0.8, 0.3200, 0.5120, 0.4352 and 0.4659 in generations 0 to 4. Each generation it overshoots the meeting point p_eq = 0.4571 and then returns, and the swings shrink by 0.4 each time. Migration rates that high replace most of an island each generation, which real populations rarely do.
Exercise
Turn one island into a continent
Set p1 0.8, p2 0.2, m1 0, m2 0.05 and Gen 100, then run. Compare the island 2 line with the continent-island module at m 0.05.
What to expect. Island 1 is flat at 0.8. Island 2 is at 0.5074 in generation 14 and 0.7964 in generation 100, identical to the continent-island curve.
Open the walkthrough step →Summary
- Both populations update from each other: p₁(t + 1) = (1 − m₁)p₁ + m₁p₂ and p₂(t + 1) = (1 − m₂)p₂ + m₂p₁.
- The difference p₁ − p₂ is multiplied by λ = 1 − m₁ − m₂ each generation, so it halves every 6.6 generations at m₁ = m₂ = 0.05.
- The quantity m₂p₁ + m₁p₂ never changes, which fixes the meeting point p_eq = (m₂p₁ + m₁p₂) / (m₁ + m₂).
- Equal rates meet at the average (0.5 for 0.8 and 0.2). Unequal rates meet nearer the island that receives fewer migrants: 0.74 for m₁ = 0.01 and m₂ = 0.09.
- Setting m₁ = 0 gives the continent-island model. A sum m₁ + m₂ above 1 makes the lines overshoot.