Halo Grazing
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
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.