NetLogo banner

 Contact Us

 Modeling Commons

 User Manuals:


NetLogo User Community Models

(back to the NetLogo User Community Models)

Lake Victoria Complex System Study

by Alexander Marlantes (Submitted: 01/30/2010)

[screen shot]

Download Lake Victoria Complex System Study
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.)


This model was created after studying Chu et al's Lake Victoria Story paper and Wilensky's Wolf Sheep Predation model as part of the UCLA Human Complex Systems program. Although the program was eventually re-written from the bottom up, the Wolf-Sheep Predation model was instrumental to the design and the proper citation can be found at the end.

This simulation models the biological statespace of Lake Victoria, replete with biomass, two different secondary species, and a tertiary predator. The simulation assigns very basic agent based rules to each agent class and records the ensuing systemic complexity and aggregate behavior via graphs below the viewing area.

Lake Victoria had a stable ecosystem consisting of 80% Cichlid fish by biomass. Surrounding fisherman desired a more commercially marketable fish and introduced a larger predator, the Nile Perch, in hopes of selling the fish in foreign markets. Many ecologists believed that because the Nile Perch had no natural predators their population would quickly balloon. It was hypothesized that this would lead to the decimation of the Cichlid species due to over predation, which in turn would cause the Nile Perch to die off, having exterminated their food source. However, Lake Victoria’s ecosystem did not implode. This simulation attempts to shed light on the agent based behavior and mechanisms behind this turn of events.

As a further point of modeling interest a human element has been added. Considering that the Nile Perch were introduced via human agency, I thought it would be interesting to model the effect of different situations upon fishermen. One of the questions that might be of interest is determining the most effective method for fishermen to extract biomass from the lake. The whole system can be seen as a delivery mechanism of the sun's energy to humans. The initial solar energy is transferred through a layered conversion process in which energy is lost and complexity gained. The sun’s initial energy is captured by biomass such as algae, then Cichlids and other fish consume the biomass, who are finally consumed once again by the Nile Perch, which are the final repository of this chain (outside of humans). Holding this view, fishing can be seen as an energy recovery optimization problem.

A model therefore might lend insight into how tinkering with an ecosystem can provide the best results for humans. For example, it might be found that establishing hunting laws that specify minimum species levels could lead to an increase commercial profitability. These minimum levels are represent in the model with the “critical” level slider.


The eco system is populated depending on slider values. The agents then move around the lake randomly. Each agent has an “energy” value which represents how much of the lake system’s energy they have accrued. Cichlids, Nile Perch, and Other Fish all have to expend a variable energy unit each time they move randomly. I added Fishermen to enrich the model, but I have not tested it extensively. They do not reproduce or die, spend no energy moving, and gain cumulative energy from catching fish (hunting only Nile Perch is the current default).

The lake can either have a constant nutritional landscape (all green) or food which when eaten re-grows, in which case a blue patch representing water without any nutrients replaces the consumed biomass until it regrows. The “Static-Biomass” mode is an experimental mode in which the biomass does not grow back. Users may find this useful for questions such as, “what is the most efficient way for a fisherman to extract the energy in the lake?” These are all set by sliders. In order to gain energy the Cichlid and Other-Fish eat the biomass and gain a set level of energy determined by the sliders. Nile Perch and Fishermen gain whatever the current energy the prey had. For example, a Nile Perch caught on the verge of death will give the fishermen much less energy than a health Nile Perch. All fish populations have a fixed probability of reproducing per iteration, which is determined by sliders on the left. At the point of reproduction a clone of that fish is spawned and the parent and offspring split the parent’s current energy (half of their current energy goes to the clone).

Please take a look at the code itself to see each individual agent’s instructions.


I think one of the more interesting aspects of this model is that an increase in complexity actually leads to an increase in system stability. This concept runs contrary to the popular mantra of simplicity leading to stability. Complexity need not necessarily lead to a collapse in a system.

For example, the system is unstable when there is no accounting for biomass (unlimited food) and results in the extinction of one or more species involved due to the “boom and bust” phenomenon. In contrast, the system stabilizes, despite fluctuations in population sizes if a third layer in the ecosystem is added (biomass).
Alfred Lotka and Vito Volterra developed a predator prey model in the early 1920’s that uses differential equations to model the fluctuations between the two populations.

Studying the Lars Volta species predation model lends some insight into this problem. The main cause of species extinction seems to be a large boom in a species due to overfeeding. This boom causes a predator level to become so high that they in fact devour the entire species they prey on, causing the predator population to quickly self implode. One interesting question this raises is how an agent based model differs from an equation based model. What are the strengths and weaknesses of each? The Lotka-Volterra expression of half a single predator-prey dyad is expressed as a differential equation, as seen below:
dx / [dt] = Rx x (Kx – x – ?xy Y) / [Kx]

Where rx and ry are the inherent growth rates of the respective species, Kx and Ky are the environmental carrying capacity for each species, and ?xy represents the predation effect that species X has on species Y. In this simulation, those differential equations are replaced by rule based behavior, which judging by the similar graphs, leads to a similar result.


The “Trial Run” switch causes the simulation to stop after 500 iterations. This could be useful for comparative benchmarks or exporting data to Excel.
The “critical level” sliders found on the right cause a species population to never fall under that set level. This can be useful for people interested in hunting and population control or the effects of species extinction and criticality.
Fishermen can move in different ways. “Troll” causes the fishermen to move horizontally across the screen as opposed to the default random movement. Activating “Hunt-Cichlid” will cause the boats to give a slight preference to cichlids, should they be told to harvest that species.
The “biomass-regrowth-time” slider sets how many iterations (the fewer the quicker) before a green food slot reappears.
The graphs can be found below the simulation view space.


Try using this simulation to explore Rosenzweig’s notion of “The Paradox of Enrichment.” What happens when there is an abundant food source? What happens when populations are only allowed to grow so big? If you were a regulatory agency what sort of policies would you employ?
What systems are stable? What systems will always crash? Which systems are the most advantageous to the fishermen? Can a marginal effectiveness be determined for fishing boats (i.e., does the 5th boat introduced catch less fish per boat than if there were only 1)?


One possible project could be to create a much larger and dynamic food pyramid eco-system. Originally I had set levels of food gained when the Nile Perch or fishermen caught a fish. I thought that implementing a fluid system in which the energy passes up the food chain depending on the specific prey’s energy status would be more realistic and provide greater transparency to the process. Taking this simulation and using it to make a food pyramid with 5 or 6 layers and many more species could be very interesting. This could allow one to model system shocks of removing one layer of a pryamid to see if any emergent solutions arise.


Fluctuations of the sizes of predatory lynx and prey hare populations in Northern
Canada from 1845 to 1935. From Life: The Science of Biology (3rd ed., Figure 46.7B, p. 1060), by W. Purves, G. Orian, and H. Heller, 1992, Sunderland, MA: Sinauer. Copyright 1992 by Sinauer Associates.

Wilensky, U. (1997). NetLogo Wolf Sheep Predation model. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

Chu, D., R. Strand & R. Fjelland (2003). “Theories of Complexity.” Complexity, 8: 19–30.

This model was created by Alexander R. F. Marlantes, UCLA, 2008.

(back to the NetLogo User Community Models)