Bluebles1
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
Bluebles1 is a model of natural selection via predation. Bluebles are an imaginary species consisting of four main types: Smooth Bluebles, Spiny Bluebles, Longneck Bluebles and Green Bluebles. This model shows what happens to the Bluebles in the presence of a predatory species, Snurples, that only eat Bluebles they can swallow whole without tearing their throats (the smooth ones, not the spiny ones).
HOW IT WORKS
The model starts with a random arrangement of Snurples and the four different types of Bluebles, the amounts of which are determined by the initial-number-x sliders (eg. "initial-number-snurples", "initial-number-smoothbluebles," etc.) Both Bluebles and Snurples use energy to move around, which they must regain by eating. Bluebles eat grass (the green patches) to regain energy. After it has been eaten, the grass regrows after a random number of ticks (0-10). Snurples prey on the Bluebles, with the rule that they only eat the smooth Bluebles, not any of the spiny ones. If a Blueble's or Snurple's energy drops below zero it dies.
Both the Bluebles and the Snurples will also reproduce. The likelihood or proability (%) of their reproduction will be based on the "Bluebles-reproduce" and "Snurples-reproduce" sliders. Each Blueble will hatch a Blueble of the same type when it reproduces. In other words, Spiny Bluebles will hatch more Spiny Bluebles, Green Bluebles will hatch more Green Bluebles, Smooth Bluebles will hatch more smooth Bluebles and longneck Bluebles will hatch more Longneck Bluebles.
HOW TO USE IT
Adjust the "initial-number-snurples", initial-number-smoothbluebles, initial-number-spinybluebles, initial-number-greenbluebles and initial-number-longneckbluebles sliders to determine how many of each breed the model will start with. Then adjust the "Bluebles-reproduce" and "Snurples-reproduce" sliders to set the likelihood of reproduction for Bluebles and Snurple.
Note that the "Bluebles-reproduce_ slider adjusts the likelihood of reproduction for all four types of Bluebles.
After adjusting the sliders, press the "Setup" button to populate the model and then the "Go" button to run it. To stop the model, simply press the "Go" button a second time.
THINGS TO NOTICE
Notice that if you set the model so that there are 24 Snurples, 16 Smooth Bluebles, 3 Spiny Bluebles, 3 Longneck Bluebles and 3 Green Bluebles and so that Snurples have a 1% chance of reproducing and Bluebles have a 2% chance, the model shows trait extinction of the Smooth Blueble body type. It is also important to note both that this happens gradually and that after the Smooth Bluebles have all died, the Snurples begin die because of lack of food.
Also notice, that with other settings, especially ones were the Snurple reproduction rate is higher than that of the Bluebles, the ecosystem is unstable and the Snurples die out before they have eaten all of the Smooth Bluebles.
THINGS TO TRY
First, try adjusting the settings so that there are 24 Snurples, 16 Smooth Bluebles, 3 Spiny Bluebles, 3 Longneck Bluebles and 3 Green Bluebles and so that Snurples have a 1% chance of reproducing and Bluebles have a 2% chance.
After you have run the model once with the settings above, try adjusting the Snurple and Blueble settings to see if you can get different results.
Now try adjusting the settings to see if you can create a stable ecosystem consisting of Bluebles, Snurples and Grass. Can you find any settings that generate a stable ecosystem?
EXTENDING THE MODEL
One way to extend the model would be to try changing the reproduction rules. For example, what would happen if reproduction depended on energy rather than being determined by a fixed probability? What would happen if Spiny Bluebles didn't produce only Spiny Bluebles, but were able to produce Smooth Bluebles as well?
Another way to extend the model would be to try changing the rules for Snurples eating Bluebles. What would happen if Snurples were not limited to only eating smooth Bluebles but had a fixed probability of eating each type of Blueble?
NETLOGO FEATURES
Note the use of breeds to model five different kinds of "turtles": Smooth Bluebles, Spiny Bluebles, Longneck Bluebles, Green Bluebles and Snurples.
Note the use of patches to model grass.
Note the use of the ONE-OF agentset reporter to select a random Smooth Blueble to be eaten by a Snurple.
Note the use of the "Turtle Shapes Editor" tool to create unique and relatively complex turtle shapes.
RELATED MODELS
Look at "Wolf-Sheep Predation" for another example of predator prey relationships.
For another example of predator prey relationships and natural selection, look at the "Bug Hunt Coevolution" model.
Comments and Questions
globals [grass] ;; keep track of how much grass there is ;; smoothbluebles, spinybluebles, longneckbluebles, greenbluebles and snurples are all breeds of turtles. breed [smoothbluebles smoothblueble] breed [spinybluebles spinyblueble] breed [longneckbluebles longneckblueble] breed [greenbluebles greenblueble] breed [snurples snurple] turtles-own [energy] patches-own [countdown] to setup clear-all ask patches [ set pcolor 64 ] ask patches [ set countdown random 10 ;; initialize grass grow clocks randomly set pcolor one-of [64 white] ;; green or white ] set-default-shape smoothbluebles "smooth blueble" create-smoothbluebles initial-number-smoothbluebles ;; create the smooth bluebles, then initialize their variables [ set color 105 ;; blue set size 7 ;; easier to see set energy random 2 setxy random-xcor random-ycor ] set-default-shape spinybluebles "spiny blueble" create-spinybluebles initial-number-spinybluebles ;; create the spiny bluebles, then initialize their variables [ set color 105 ;; blue set size 7 ;; easier to see set energy random 2 setxy random-xcor random-ycor ] set-default-shape longneckbluebles "longneck blueble" create-longneckbluebles initial-number-longneckbluebles ;; create the longneck bluebles, then initialize their variables [ set color 105 ;; blue set size 7 ;; easier to see set energy random 2 setxy random-xcor random-ycor ] set-default-shape greenbluebles "spiny blueble" create-greenbluebles initial-number-greenbluebles ;; create the green bluebles, then initialize their variables [ set color 64 ;; green set size 7 ;; easier to see set energy random 2 setxy random-xcor random-ycor ] set-default-shape snurples "snurple" create-snurples initial-number-snurples ;; create the snurples, then initialize their variables [ set color 115 ;; purple set size 7 ;; easier to see set energy random 50 setxy random-xcor random-ycor ] set grass count patches with [pcolor = 64] reset-ticks end to go if not any? turtles [ stop ] ask smoothbluebles [ move set energy energy - 1 ;; deduct energy for smoothbluebles eat-grass death reproduce-smoothbluebles ] ask spinybluebles [ move set energy energy - 1 ;; deduct energy for spinybluebles eat-grass death reproduce-spinybluebles ] ask longneckbluebles [ move set energy energy - 1 ;; deduct energy for longneckbluebles eat-grass death reproduce-longneckbluebles ] ask greenbluebles [ move set energy energy - 1 ;; deduct energy for greenbluebles eat-grass death reproduce-greenbluebles ] ask snurples [ move set energy energy - 1 ;; snurples lose energy as they move catch-smoothbluebles death reproduce-snurples ] ask patches [ grow-grass ] set grass count patches with [pcolor = 64] ;; green tick end to move ;; turtle procedure rt random 50 lt random 50 fd 1 end to eat-grass ;; bluebles procedure ;; bluebles eat grass, turn the patch white if pcolor = 64 [ ;; green set pcolor white set energy energy + 2 ;; bluebles gain energy by eating ] end to reproduce-smoothbluebles ;; smoothbluebles procedure if random-float 100 < bluebles-reproduce [ ;; throw "dice" to see if you will reproduce set energy (energy / 2) ;; divide energy between parent and offspring hatch 1 [ rt random-float 360 fd 1 ] ;; hatch an offspring and move it forward 1 step ] end to reproduce-spinybluebles ;; spinybluebles procedure if random-float 100 < bluebles-reproduce [ ;; throw "dice" to see if you will reproduce set energy (energy / 2) ;; divide energy between parent and offspring hatch 1 [ rt random-float 360 fd 1 ] ;; hatch an offspring and move it forward 1 step ] end to reproduce-longneckbluebles ;; longneckbluebles procedure if random-float 100 < bluebles-reproduce [ ;; throw "dice" to see if you will reproduce set energy (energy / 2) ;; divide energy between parent and offspring hatch 1 [ rt random-float 360 fd 1 ] ;; hatch an offspring and move it forward 1 step ] end to reproduce-greenbluebles ;; greenbluebles procedure if random-float 100 < bluebles-reproduce [ ;; throw "dice" to see if you will reproduce set energy (energy / 2) ;; divide energy between parent and offspring hatch 1 [ rt random-float 360 fd 1 ] ;; hatch an offspring and move it forward 1 step ] end to reproduce-snurples ;; snurple procedure if random-float 100 < snurples-reproduce [ ;; throw "dice" to see if you will reproduce set energy (energy / 2) ;; divide energy between parent and offspring hatch 1 [ rt random-float 360 fd 1 ] ;; hatch an offspring and move it forward 1 step ] end to catch-smoothbluebles ;; snurple procedure let prey one-of smoothbluebles-here ;; grab a random smoothblueble if prey != nobody ;; did we get one? if so, [ ask prey [ die ] ;; kill it set energy energy + 100 ] ;; get energy from eating end to death ;; turtle procedure ;; when energy dips below zero, die if energy < 0 [ die ] end to grow-grass ;; patch procedure ;; countdown on white patches: if reach 0, grow some grass if pcolor = white [ ifelse countdown <= 0 [ set pcolor 64 set countdown 10 ] [ set countdown countdown - 1 ] ] end
There is only one version of this model, created over 13 years ago by Kay Ramey.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.