Divergent Evolution
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model demonstrates divergent evolution as a result of competition for food. All the birds start out with similar beak sizes, and all birds can eat both yellow and green patches. However, different beak sizes are more suited for different types of food. So, if multiple birds are competing for the same patch, only the bird with the biggest beak gets to eat if the patch is yellow, and the bird with the smallest beak gets to eat if the patch is green. The birds die if their energy goes to zero, and they reproduce if it gets high enough. This process causes the most "successful" beak size to be passed on to new generations of birds, allowing the bird population to evolve.
HOW IT WORKS
At setup, each patch randomly becomes either yellow or green, based on a probability selected by the user (percent-green). The patch's initial color will stay with it throughout the simulation--if a patch gets eaten, it will regrow the same color it started with, every time. The population of birds is created based on a user-selected number (initial-birds). All birds start with a beak size of about 10, give or take a little bit. Their color is related to their beak size. Birds that are lighter-colored have larger beaks, and birds that are darker-colored have smaller beaks.
At each tick, the following procedures occur:
The birds move. They do this by turning a small amount and taking a small step forward. They lose an amount of energy equal to the distance they move.
The birds eat. If no one else is on a bird's patch, the bird will eat it. If other birds are there, only the bird with the biggest beak (if the patch is yellow) or the smallest beak (if the patch is green) gets to eat. When a bird eats a patch, the bird gains a user-specified amount of energy (energy-from-food) and the patch turns brown.
The birds reproduce and die. If a bird's energy goes above a user-specified amount (reproduction-energy), it will reproduce by hatching a new bird and transferring some if it's own energy (initial-energy) to the new bird. The new bird will have a beak size similar to its parent's beak size, but slightly different. If a bird's energy gets to zero, it dies.
The patches regrow. When a patch gets eaten (turns brown), it sets its countdown clock. When the countdown clock gets to zero, it changes its color back to what it was initially.
HOW TO USE IT
In order to run the model, the first step is to choose settings for the user-selected variables. The following items in the interface can be adjusted by the user.
initial-birds: the number of birds created during setup percent-green: the percent of patches that turn green during setup initial-energy: the amount of energy that each bird is "born" with reproduction-energy: the amount of energy required to reproduce energy-from-food: the amount of energy gained from eating one patch of food food-regrowth-time: the maximum amount of time required for a food patch to regrow
Once the variables have been set, click "setup" to initialize the simulation, then click "go" to run it. The following items in the interface help the user monitor the results of the simulation.
View: The view shows the birds moving and the patches changing colors at each tick. The main benefit of the view is that the birds' colors reflect their beak sizes. Birds that are lighter-colored have larger beaks, and birds that are darker-colored have smaller beaks.
Bird Count Plot: This plot displays the total number of birds over time. It also shows the number of birds with beak size less than 5 and greater than 15.
Beak Size Histogram: This plot shows the current distribution of beak sizes.
Patch Monitors: These monitors show the current number of patches of each type (green, yellow, and brown).
THINGS TO NOTICE
As you run the model, pay attention to the total population, the time it takes for the population to diverge, and whether the population is diverging evenly. These key results will vary as the settings change.
THINGS TO TRY
Try to identify which variables have the greatest effect on the results of the simulation.
NETLOGO FEATURES
It is important to note that this model explicitly limits the beak-size range to 0 - 20. Birds with beak sizes outside this range are not allowed to eat, and so they die off. If this restriction were removed, the populations would continue to diverge without limit.
CREDITS AND REFERENCES
This model was created by Madison Fitzpatrick.
Comments and Questions
;; Simulate divergent evolution in a population. Have 2 different regions of the world, ;; representing 2 different food sources for the turtles. Turtles with bigger beaks are ;; more suited to eat one region, smaller are more suited to the other. ;; All turtles start out with a similar sized "beak." turtles-own [ beak-size energy ] patches-own [ countdown food-type ] to setup ca ask patches [ set countdown random food-regrowth-time ifelse random 100 < percent-green [set pcolor 56] [set pcolor 46] ifelse pcolor = 46 [ set food-type 1 ] [ set food-type 2 ] ] crt initial-birds [ setxy random-xcor random-ycor set shape "bird side" set size 2 set beak-size (10 + random-float 1 - random-float 1) set color scale-color violet beak-size 0 20 set energy initial-energy ] reset-ticks end to go move eat-food reproduce death grow-food tick end to move ask turtles [ rt random 50 lt random 50 let dist random-float 1 fd dist set energy energy - dist ] end to eat-food ask turtles [ if beak-size > 0 and beak-size < 20 [ if pcolor = 46 [ if max-one-of turtles-here [beak-size] = self [ set energy energy + energy-from-food set pcolor 36 ]] if pcolor = 56 [ if min-one-of turtles-here [beak-size] = self [ set energy energy + energy-from-food set pcolor 36 ]]]] end to reproduce ask turtles [ if energy > reproduction-energy [ set energy energy - initial-energy hatch 1 [ set energy initial-energy set beak-size beak-size + random-float 0.5 - random-float 0.5 set color scale-color violet beak-size 0 20 ]]] end to death ask turtles [ if energy <= 0 [ die ]] end to grow-food ask patches [ if pcolor = 36 [ ifelse countdown <= 0 [ ifelse food-type = 1 [ set pcolor 46 ] [ set pcolor 56 ] set countdown food-regrowth-time ] [ set countdown countdown - 1 ]]] end
There is only one version of this model, created over 12 years ago by Madison Fitzpatrick.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Divergent Evolution.png | preview | Preview for 'Divergent Evolution' | over 12 years ago, by Madison Fitzpatrick | Download |
This model does not have any ancestors.
This model does not have any descendants.