NetLogo banner

 Contact Us

 Modeling Commons

 User Manuals:


NetLogo User Community Models

(back to the NetLogo User Community Models)

[screen shot]

If clicking does not initiate a download, try right clicking or control clicking and choosing "Save" or "Download".

(You can also run this model in your browser, but we don't recommend it; details here.)


PopGen Fishbowl is an agent-based population genetics simulation. The program contains the tools to conduct virtual experiments violating all the assumptions of Hardy-Weinberg theory. You can explore the effects of:
1- Small population size (Genetic Drift)
2- Selection
3- Mutation
4- Migration
5- Non-random mating
Some basic population biology is also demonstrated such as, logistic population growth and the Allee Effect.


The agents are fish in a small pond. Tracked is a single incomplete-dominant gene that affects color (RR = red; Rr = pink; rr = white). When fish come together (and are of opposite sex) they may breed, producing offspring following mendelian inheritance patterns. The model simulates overlapping generations, with reproduction occurring whenever fish may meet.

Monitored data include:
N (Population size)
Allele frequencies (R & r)
Genotype frequencies (RR, Rr & rr)

Graphed data include:
Population size over time
Allele frequency of R over time


To start, set sliders:
Init-N = 20, Brood-size = 5, Allele-freq-R = 0.5,
Carrying-Capacity = 100, Sex-ratio = 0.5, Mortality = 0.05

Press the ‘Set up’ button and fish will appear in the pond. Press ‘Go’ and the fish will swim around and breed new fish. The population should grow and hover around 100 fish. All three colors should persist, though the frequency of the R allele may drift over time (and given enough time may become fixed at 100% or extinct). Note: it is possible that the fish may not breed fast enough and the population go extinct (Skull ‘n Bones), in which case ‘Set up’ and ‘Go’ again.

Below is a list of the model parameters and their functions

Initial Conditions
Init-N Starting population size
Brood-size The number of offspring hatched in a reproductive event
Allele-Freq-R Starting proportion of the red allele ‘R’
Carrying-capacity The maximum number of fish that can be sustained in the pond
Sex-ratio-F:M The operational sex ratio (probability that a fish will be female)
Mortality The probability that a fish will randomly die in 100 ticks, this is the maximum value reached at carrying capacity.
Stop-at-Fixation If ‘on’ the run will stop if the frequency of R is 1.0 or 0.

Experimental Variables
Selection Sets the relative fitness of each genotype.
Selection is imposed on the juveniles
Note: you can simulate selection against a dominant or recessive allele by making the relative fitness of Rr equal to one of the homozygotes.
Migration Migration-rate sets the probability that a fish in the pond is replaced by one from another pond.
Migrant-Freq-R sets the frequency of R allele in the migrant population.
Mutation This calls a probability that an allele in a juvenile will mutate.
Red alleles mutating to white and white to red are called separately.
Non-random Mating If assortment < 0, fish will be more likely to mate with a different color fish. If assortment > 0, they will be more likely to mate with the same color fish (inbreeding).


This model illustrates microevolution of allele/genotype frequencies by simulating interactions among individuals and mendelian inheritance. If you slow things down you can see little ‘explosions’ of fish fry from breeding events. Because of this, there are several things which might prevent the population from behaving as expected. For example:

If Init-N is low, the fish may not find a suitable partner and breed fast enough and the population may die out (Allee effect).

If the population is all of one sex, they will not breed

If mortality = 0 (no random mortality), the population will stop breeding/evolving at its carrying capacity.


This model is designed as a teaching tool. It is ideal for inquiry-based learning, as students can design ‘virtual experiments’ and collect/analyze data in a spread sheet. Pedagogically, this may be preferable to the model exporting data.

One approach would be to lead students through an experiment (e.g. effect of carrying capacity on average (and variance in) time to fixation, and then ask them a question and have them design and conduct experiments to answer it.


With just the controls to tweak the five conditions for Hardy-Weinberg equilibrium it is hard to fit this model on a small screen.

It might be helpful to be able to divide the world into separate ponds an monitor them, particularly if you could see migration from one to the othe


The great of this model over many (non-Netlogo) others is the ability to see what’s going on in the population. For example, allele fixation is not just a value or plot going to 0 or 1.0, all the fish are then the same color. The fact that it is an actual simulation means that there is variation in results, which is biologically realistic.


The most similar model I know of is the commercially available Evobeaker ®.
Related Netlogo models I have found include:
Models in the library Evolution folder
Related Netlogo community models include:
Bug Hunt Evolution


PopGen Fishbowl 1.0 (2008)
Thomas C. Jones
Dept. of Biological Sciences
East Tennessee State University

Thanks to U. Wilensky and all who created Netlogo, for creating an environment in which a code-phobic professor can work.

(back to the NetLogo User Community Models)