Divergent Evolution

Divergent Evolution preview image

1 collaborator

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 5.0.4 • Viewed 469 times • Downloaded 41 times • Run 0 times
Download the 'Divergent Evolution' modelDownload this modelEmbed this model

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

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;; 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.