Halo Grazing

Halo Grazing preview image

1 collaborator

Default-person Wade Berger (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.4 • Viewed 195 times • Downloaded 20 times • Run 0 times
Download the 'Halo Grazing' 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 attempts to uncover the grazing patterns of herbivore fish around coral reef structures. Observed from above, seagrass beds surrounding a coral reef tend to form halos or ellipses surrounding the reef.

Known as halo grazing (Madin, Madin, & Booth, 2011), this phenomenon is seen in coral reef ecological systems around the globe. Recent satellite imaging methods have enabled researchers to observe and document this phenomenon and begin to understand its causes. Clearly there are not crop-circle minded fish out there?

To explore this phenomenon, we have included a herbivore fish species, a piscivore predator species, randomly growing seagrass and a centrally located rocky reef with ample space for the herbivore species to hide among corals and rocks.

HOW IT WORKS

This project explores a simple underwater ecosystem made up of fish, a reef, predators, and seagrass. The fish begin and spend a lot of their time inside of reefs, that offer them protection from predators.

Their main source of food however, is seagrass, which grow best in areas away from the reefs, since they have a tendency to block sunlight that provides nutrients for the seagrass to grow. When fish swim out to the seagrass to feed on it, they put themselves in danger of being eaten by larger predators. Because of this, they frequently swim to concentrations of seagrass that are closest to the reefs, eat, and quickly swim back to the reef.

HOW TO USE IT

Users of the model first set up the ecosystem by clicking setup, which clears the screen, colors the background tan with sand, and populates it with seagrass. Users can then select the number of predators, starting number of fish, and the regrowth rate for seagrass by using the sliders on the left side of the screen. Lastly, users will need to click the “center reef” button in order to both place a reef in and the fish in the ecosystem.

Upon clicking Go, the fish swim out to sea grass to feed on it once their energy level dips. Once they get to a piece of seagrass, they eat enough to get to an energy level up and then return to the reef for safety. Once back at the reef, they repeat the process and go looking for food again. On each occasion that the fish swim out for food, they make themselves visible to predators, who swim in a random pattern around the model. If a fish and a predator meet in a particular spot, the predator will eat the fish. We have not modeled out particulars for the predators, including energy levels, reproduction rates, or amount of food eaten.

The model will run continuously unless all of the fish have been eaten or all of the seagrass is eaten.

THINGS TO NOTICE

Users may notice that in the patterns that the fish eat the seagrass, that a shape that roughly mimics a circle will form around the reef, demonstrating the fishes’ antipredator behavioral patterns (Madin, Madin, & Booth, 2011).

THINGS TO TRY

Change the starting numbers of fish and predators to different ratios. What does that change in the environment?

Change the level of seagrass regeneration. What role does quickly regrowing seagrass play in this ecosystem?

EXTENDING THE MODEL

  • Users can create code that allows for a different placement of the reef, and observe the results (reefs can in close proximity or spread out).
  • Users may add code that may change the behaviors of the predators, making them more or less likely to follow after fish at certain points in time (some piscivores just lurk at the edge of the sea grass).
  • Users may make the fish grow over time as they acquire more energy. They might also chart out these variables and see how they change over time.

NETLOGO FEATURES

(interesting or unusual features of NetLogo that the model uses, particularly in the Code tab; or where workarounds were needed for missing features)

Includes an uphill for fish to find their way back to the reef amidst their random movements.

RELATED MODELS

The sample models in the Netlogo library of the Wolf/Sheep predation, Rabbits/Grass Weeds, Ants, and coral reef all model some of the same behaviors of this particular model.

CREDITS AND REFERENCES

  • Madin, E. M. P., Madin, J. S., & Booth, D. J. (2011). Landscape of fear visible from space. Scientific Reports, 1, 14.
  • https://www.nature.com/articles/srep00014
  • http://science.sciencemag.org/content/182/4113/715
  • https://www.int-res.com/articles/meps/111/m111p001.pdf

Comments and Questions

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

Click to Run Model

breed [ fish a-fish]
breed [ predators a-predator]
breed [ reefs a-reef]
breed [ seagrass a-grass]

fish-own [
  energy
  carried-seagrass
  found-reef?
]

seagrass-own [
  count-down
]

patches-own [
  reef?
  reef-scent
]

Globals
[
  home-base                                ;; xxx location for fish and for need to figure out how to code this
  seagrass-amount                          ;; amount of grass to start out with
]

;=============== Content ===============================================================================================================
; 1. Setup
; 2. Go
; 3. Rules
; 4. Extra Code


;;                                        ================ 1. Setup =======================

to setup
  clear-all
  reset-ticks
  set seagrass-amount starting-seagrass-coverage
  set-default-shape fish "fish 3"
  set-default-shape seagrass "plant"
  set-default-shape reefs "reef1"
  set-default-shape predators "fish"
  set-up-seagrass
  Create-sand
  generate-fish
  generate-predators
end 

to set-up-seagrass
  ;; create seagrass turtles at random locations
  create-seagrass seagrass-amount
  ask seagrass [
    setxy random-xcor random-ycor
  ]
end 

to create-sand
  ask patches [
    if pcolor = black  [set pcolor 49]
  ]  ; patches not green or reef, sandy color
end 

to Generate-fish
 create-fish starting-num-fish ; from the slider
 ask fish [
    setxy 0 0 ; xxx would change with home-base
    set size 3
    set energy .5
  ]
end 

to Generate-predators
 create-predators num-predators
 ask predators [
    setxy random-xcor random-ycor
    set size 4
  ]
  ask seagrass [
    if any? predators-on neighbors
    [ die ]
  ]
end 


;;                                        ================ 2. GO =========================

to go
  if not any? fish [stop ]
  if not any? reefs [ stop ]
  if not any? seagrass [stop ]
  ask fish [
    if 2 >= ticks [ stop ]
    fish-eat-food
    wiggle
    fd 1
  ]
  ask predators [
    wiggle
    predator-walk
    Predators-eat-fish
  ]
  tick
  ask fish [ regrow-fish ]
  ask seagrass [ regrow-seagrass ]
  tick
end 


; to create-reef-with-mouse ----------------------------xxx would set xcor and ycor as home base Not working, revisit later
; if mouse-down? [
;   ask patch mouse-xcor mouse-ycor [
;      set pcolor grey
;    ]
;    display
;  ]
; End

to seed-one
  ;; tell the center to be a reef
   if any? reefs [ stop ]
  ask patch 0 0 [
    set pcolor grey
  ]
  create-reefs 1 [
    setxy 0 0 ; xxx would be xcor and ycor of reef from mouse click
    set shape "reef1"
    set size 15
    ask neighbors [ set pcolor grey ]
  ]
  ; set reef? variable to true inside the reef, false elsewhere
  ask patches [
    set reef? (distancexy 0 0) < 5 ; xxx would use xcor, ycor of mouse click
   ;; spread a reef-scent over the whole world -- stronger nearer the reef
    set reef-scent 200 - distancexy 0 0
  ]
  ask reefs [
    ask seagrass in-radius 3 [ die ]
  ]
end 



;;                                             =============== 3. Rules ===================
;----------------fish------------

to fish-eat-food
  ;energy levels 0 = die, .5 = seek food 1 = found food, now return to reef
    if energy <= 0 [ die ]
    ifelse energy = .5
    [ search-for-seagrass ]
    [ go-to-home-base ]
end 

to search-for-seagrass
  ;; fish procedure to seek out new food
  ask fish [
  let yum one-of seagrass-here
  if yum != nobody [
    ask yum [ die ]
  set energy energy + .5
    ]
  ]
end 

to go-to-home-base
  ; fish procedure for returning to the reef, combines with uphill-reef-scent and reef-scent-at-angle
  ifelse reef?
  [set energy .5]
  [ uphill-reef-scent ]
end 

to uphill-reef-scent
  let scent-ahead reef-scent-at-angle 0
  let scent-right reef-scent-at-angle 45
  let scent-left reef-scent-at-angle -45
  if (scent-right > scent-ahead) or (scent-left > scent-ahead)
  [ ifelse scent-right > scent-left
    [ rt 45 ]
    [ lt 45 ]
  ]
end 

to-report reef-scent-at-angle [angle]
  ;feeds into uphill-reef-scent
  let p patch-right-and-ahead angle 1
  if p = nobody [ report 0 ]
  report [ reef-scent ] of p
end 

;---------------predators----------

to predators-eat-fish
  ; predators contact fish and the fish lose enough energy to die, connected to fish-eat-food
  let prey one-of fish-here
  if prey != nobody [
    ask prey [ set energy energy - 1 ]
  ]
end 


;                                             ================ 4. Extra Code =======================

to regrow-seagrass
  ; xxx need to figure out the scale of this amount
    if count seagrass <= 5000
  [ hatch-seagrass 1000 * seagrass-regrowth-rate [ setxy random-xcor random-ycor ] ; xxx would love to have this outgrow the eating rate
  ]
end 

to regrow-fish
;; new fish, use same code from regrow-seagrass
  let num-fish count fish
  if num-fish <= 1
  [ hatch-fish seagrass-amount / 5000 [ setxy random-xcor random-ycor ] ; xxx
  ]
end 

to predator-walk
  ;; look for reefs, and rotate to head away from them
  ifelse not any? reefs-on patch-ahead 1
  [ fd 1 ]
  [ wiggle predator-walk ]
end 

to wiggle
  ;; fish and predator change heading procedure
  rt random 50 - random 50
end 

There is only one version of this model, created over 6 years ago by Wade Berger.

Attached files

File Type Description Last updated
Halo Grazing.png preview Preview for 'Halo Grazing' over 6 years ago, by Wade Berger Download

This model does not have any ancestors.

This model does not have any descendants.