MIHS - Debugging Practice

No preview image

2 collaborators

Larry_bencivengo Larry Bencivengo (Author)
Default-person Tiffany , Cat (Author)

Tags

debug 

Tagged by Larry Bencivengo about 6 years ago

mihs 

Tagged by Larry Bencivengo about 6 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.4 • Viewed 226 times • Downloaded 17 times • Run 0 times
Download the 'MIHS - Debugging Practice' 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 project explores a simple ecosystem made up of rabbits, grass, and weeds. The rabbits wander around randomly, and the grass and weeds grow randomly. When a rabbit bumps into some grass or weeds, it eats the grass and gains energy. If the rabbit gains enough energy, it reproduces. If it doesn't gain enough energy, it dies.

The grass and weeds can be adjusted to grow at different rates and give the rabbits differing amounts of energy. The model can be used to explore the competitive advantages of these variables.

HOW TO USE IT

Click the SETUP button to setup the rabbits (red), grass (green), and weeds (violet). Click the GO button to start the simulation.

The NUMBER slider controls the initial number of rabbits. The BIRTH-THRESHOLD slider sets the energy level at which the rabbits reproduce. The GRASS-GROWTH-RATE slider controls the rate at which the grass grows. The WEEDS-GROWTH-RATE slider controls the rate at which the weeds grow.

The model's default settings are such that at first the weeds are not present (weeds-grow-rate = 0, weeds-energy = 0). This is so that you can look at the interaction of just rabbits and grass. Once you have done this, you can start to add in the effect of weeds.

THINGS TO NOTICE

Watch the COUNT RABBITS monitor and the POPULATIONS plot to see how the rabbit population changes over time. At first, there is not enough grass for the rabbits, and many rabbits die. But that allows the grass to grow more freely, providing an abundance of food for the remaining rabbits. The rabbits gain energy and reproduce. The abundance of rabbits leads to a shortage of grass, and the cycle begins again.

The rabbit population goes through a damped oscillation, eventually stabilizing in a narrow range. The total amount of grass also oscillates, out of phase with the rabbit population.

These dual oscillations are characteristic of predator-prey systems. Such systems are usually described by a set of differential equations known as the Lotka-Volterra equations. NetLogo provides a new way of studying predatory-prey systems and other ecosystems.

THINGS TO TRY

Leaving other parameters alone, change the grass-grow-rate and let the system stabilize again. Would you expect that there would now be more grass? More rabbits?

Change only the birth-threshold of the rabbits. How does this affect the steady-state levels of rabbits and grass?

With the current settings, the rabbit population goes through a damped oscillation. By changing the parameters, can you create an undamped oscillation? Or an unstable oscillation?

In the current version, each rabbit has the same birth-threshold. What would happen if each rabbit had a different birth-threshold? What if the birth-threshold of each new rabbit was slightly different from the birth-threshold of its parent? How would the values for birth-threshold evolve over time?

Now add weeds by making the sliders WEEDS-GROW-RATE the same as GRASS-GROW-RATE and WEEDS-ENERGY the same as GRASS-ENERGY. Notice that the amount of grass and weeds is about the same.

Now make grass and weeds grow at different rates. What happens?

What if the weeds grow at the same rate as grass, but they give less energy to the rabbits when eaten (WEEDS-ENERGY is less than GRASS-ENERGY)?

Think of other ways that two plant species might differ and try them out to see what happens to their relative populations. For example, what if a weed could grow where there was already grass, but grass couldn't grow where there was a weed? What if the rabbits preferred the plant that gave them the most energy?

Run the model for a bit, then suddenly change the birth threshold to zero. What happens?

NETLOGO FEATURES

Notice that every black patch has a random chance of growing grass or weeds each turn, using the rule:

if random-float 1000 < weeds-grow-rate
  [ set pcolor violet ]
if random-float 1000 < grass-grow-rate
  [ set pcolor green ]

RELATED MODELS

Wolf Sheep Predation is another interacting ecosystem with different rules.

HOW TO CITE

If you mention this model or the NetLogo software in a publication, we ask that you include the citations below.

For the model itself:

Please cite the NetLogo software as:

COPYRIGHT AND LICENSE

Copyright 2001 Uri Wilensky.

CC BY-NC-SA 3.0

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.

This model was created as part of the projects: PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN CLASSROOMS and/or INTEGRATED SIMULATION AND MODELING ENVIRONMENT. The project gratefully acknowledges the support of the National Science Foundation (REPP & ROLE programs) -- grant numbers REC #9814682 and REC-0126227.

Comments and Questions

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

Click to Run Model

breed [rabbits rabbit]
breed [rabbit*s rabbit*]
breed [wolves wolf]
rabbits-own [ energy ]
rabbit*s-own [ energy ]
wolves-own [ energy ]

to setup
  clear-all
  grow-grass-and-poisonous-plants
  set-default-shape rabbits "rabbit"
  create-rabbits number [
    set color white
    setxy random-xcor random-ycor
    set energy random 10  ;start with a random amt. of energy
  ]
  set-default-shape rabbit*s "rabbit"
  create-rabbit*s number [
    set color yellow
    setxy random-xcor random-ycor
    set energy random 12  ;start with a random amt. of energy
  ]
  set-default-shape wolves "x"
  create-wolves number [
    set color grey
    set size 2
    setxy random-xcor random-ycor
    set energy random 15  ;start with a random amt. of energy
  ]
  reset-ticks
end 

to go
  if not any? turtles [ stop ]
  grow-grass-and-poisonous-plants
  ask rabbits
  [ move
    eat-grass
    eat-poisonous-plants
    reproduce
    death ]
  ask rabbit*s
  [ move
    eat-grass
    reproduce*
    death ]
  ask wolves
  [ move
    kill-rabbits
    kill-rabbit*s
    reproduce**
    death ]
  tick
end 

to grow-grass-and-poisonous-plants
  ask patches [
    if pcolor = black [
      if random-float 1000 < poisonous-plants-grow-rate
        [ set pcolor violet ]
      if random-float 1000 < grass-grow-rate
        [ set pcolor green ]
  ] ]
end 

to move  ;; rabbit procedure
  rt random 50
  lt random 50
  fd 1
  ;; moving takes some energy
  set energy energy - 0.5
end 

to eat-grass  ;; rabbit procedure
  ;; gain "grass-energy" by eating grass
  if pcolor = green
  [ set pcolor black
    set energy energy + grass-energy ]
end 

to eat-poisonous-plants  ;; rabbit procedure
  ;; lose "grass-energy" by eating poisonous-plants
  if pcolor = violet
  [ set pcolor black
    set energy energy - poisonous-plants-energy ]
end 

to kill-rabbits
  let prey one-of rabbits-here                  ; grab a random rabbit
  if prey != nobody  [                          ; did we get one?  if so,
    ask prey [ die ]                            ; kill it, and...
    set energy energy + grass-energy            ; get energy from eating
  ]
end 

to kill-rabbit*s
  let prey one-of rabbit*s-here                 ; grab a random rabbit*
  if prey != nobody  [                          ; did we get one?  if so,
    ask prey [ die ]                            ; kill it, and...
    set energy energy + grass-energy            ; get energy from eating
  ]
end 

to reproduce     ;; rabbit procedure
  ;; give birth to a new rabbit, but it takes lots of energy
  if energy > birth-threshold
    [ set energy energy / 2.2
      hatch 1 [ fd 1 ] ]
end 

to reproduce*     ;; rabbit* procedure
  ;; give birth to a new rabbit*, but it takes lots of energy
  if energy > birth-threshold
    [ set energy energy / 3
      hatch 1 [ fd 1 ] ]
end 

to reproduce**     ;; wolf procedure
  ;; give birth to a new wolf, but it takes lots of energy
  if energy > birth-threshold
    [ set energy energy / 2
      hatch 1 [ fd 1 ] ]
end 

to death     ;; turtle procedure
  ;; die if you run out of energy
  if energy < 0 [ die ]
end 

; Copyright 2001 Uri Wilensky.
; See Info tab for full copyright and license.

There are 2 versions of this model.

Uploaded by When Description Download
Tiffany , Cat about 6 years ago Based on Rabbits Grass Weeds model, we added two breeds, of rabbits, one breed that can eat the poisonous plants a bit more, as well as a predator to both breeds, a wolf. Download this version
Larry Bencivengo about 6 years ago Initial upload Download this version

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.