The simulations behind the fitness landscape visualizations

Written by: Bjørn Østman

Primary Source: Pleiotropy

We now have two videos out featuring evolving populations in two-dimensional fitness landscapes.Using fitness landscapes to visualize evolution in action Youtube Vimeo
Visualizing coevolution in dynamic fitness landscapes Youtube Vimeo

(Best to watch the first one first for some background information about fitness landscapes.)

These movies are based on simulations of organisms evolving by reproduction, mutation and selection. Populations move around on a map that depict fitness as a function of phenotype (i.e., the biological and physical characteristics of an individual organism).

The following is a semi-technical description of the simulations, so be warned. If you have questions about some details, let me know in the comments.

Phenotype. The fitness landscapes that you see are phenotype-fitness maps. That means that for each possible phenotype there is an associated fitness value (which is a scalar – a single number). The phenotype of these simulated organisms consist of two traits. Both of these traits are numbers that range between 1 and 200. A phenotype of (10, 10) means that the organisms is situated near the lower corner of the fitness landscape, and a phenotype of (195, 3) means that the organism is situated near the right corner.

Sympatry. All simulations shown in the videos have no spatial component. The moving around in the landscape is only caused by changes in the phenotype, not geographically, and the population is therefore said to be strictly sympatric or well-mixed. If the individual organisms did move around in physical space, then where they are located relative to each other could have an influence of who they interact with, which could change things further. Structured populations are known to affect evolutionary dynamics through social interaction, competition for resources, and mating.

Mutations in these simulations work like this: Each of the two traits mutate at a set mutation rate. Every time an organisms reproduces, the new organism has a chance to mutate which is equal to the mutation rate. This is true for each trait, so that a mutation rate of 0.05 means that trait 1 has a 5% chance of changing, and trait 2 also has a chance of changing. These two events are independent of each other. When a trait mutates, the trait value is either increased or decreased by one. In other words, if the trait value of the parent was 142, the offspring will have a value of 141 or 143 with equal probability. There is no underlying genetics in these models, and the phenotype is directly inherited.

Selection.  Organisms reproduce asexually. Every offspring is a clone of the parent, except for any mutations. Every computational update some organisms die and some reproduce. Death is completely random, so that every organism has an equal chance or being removed every update. Who gets to reproduce is also random, but fitness affects this chance. For example, an organism that has twice the fitness of another organisms has a probability of reproducing that is twice as high. This doesn’t guarantee that it will have twice as many offspring – but on average it will be approximately so.


Population size. Competition in these simulations is for space. Some simulations have a constant population size. In this case, a small percentage of the population is killed every update, and those empty spots are filled by selecting among the survivors. Other simulations have variable population sizes. In these vases every surviving organism has a chance to reproduce once every computational update that is equal to their normalized fitness. The variable population size simulations results in stable populations where the population size fluctuate around a value which is ultimate given by the average fitness. For example, when the population climbs a peak the average fitness of organisms increases, and the average chance of reproducing goes up. This means that the population grows in size. The way this is implemented is such that there is a carrying capacity set to 2,000 individuals. If the population reaches this size, 50% are moved next update, and the other 50% then has a chance to reproduce. If they all had the maximum fitness (a set value), then they would all reproduce, and the population size would be back to 2,000. This doesn’t happen, because mutations would make some individuals have a fitness lower than the maximum. If the population size gets very low, the number than is killed every update is set to less than 50%, so that more than half of the organisms survives. The precise fraction killed goes from zero at population size zero linearly through 50% at 2,000. This most often results in population of around 1,600 organisms. Most published simulations studies of evolution use constant population sizes.

Dynamic landscapes. In the second video of coevolution systems the fitness landscape of one population changes over time because they are affected by another population. In the moth-orchid simulation, the length of the moth proboscis needs to be longer than the orchid spur length to be able to get to the nectar at the bottom. If every individual orchid has a spur that is longer than the proboscis, then moth fitness is low (but non-zero). Having a proboscis that is as long as the spurs of half of the orchid population will give the moth an intermediate fitness. The fitness landscape of the orchids is similarly affected by the moth population, with the orchids needing spurs that are longer than the proboscis in order for the feeding moth to get pollen on their faces. This drives the evolution of longer proboscises and spurs as dictated by the two changing fitness landscapes. In the rock-paper-scissors simulation, the fitness landscape of each population is affected by the phenotype values of the other two populations.

The following two tabs change content below.
Bjørn Østman
Bjørn Østman is an evolutionary biologist postdoc working in the BEACON Center for the Study of Evolution in Action.
I am interested in many aspects of evolution. I work in computational biology, using various approaches to learn about fundamental processes of evolution. Bioinformatics is good for learning about real genes (data generously supplied by other researchers), and simulations are good for testing the mechanisms of evolution. I am particularly interested in how populations and organisms adapt to changing environments, both at the genetic and phenotypic level. Lately my research has focused on the evolutionary dynamics of populations evolving in rugged fitness landscapes.
Bjørn Østman

Latest posts by Bjørn Østman (see all)