Grazing
Model was written in NetLogo 6.0.1
•
Viewed 485 times
•
Downloaded 31 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Info tab cannot be displayed because of an encoding error
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
patches-own [ nutrient ;; the total of the manure and chicken-manure manure ;; the amount of manure added to patches by cows and sheep chicken-manure ;; the amount of manure added to patches by chickens energy ;; the health of the pasture (as measured by the amount of grass) ] breed [sheep a-sheep] breed [chickens chicken] breed [cows cow] to setup clear-all setup-patches setup-turtles reset-ticks end to setup-patches ask patches [ set pcolor 65 set energy 9 set manure 0 set chicken-manure 0 ] end to setup-turtles set-default-shape cows "cow" set-default-shape sheep "sheep" set-default-shape chickens "chicken" create-cows cow-number [ set color black set size 2 setxy random-xcor random-ycor ] create-sheep sheep-number [ set color white setxy random-xcor random-ycor ] create-chickens chicken-number [ set color red setxy random-xcor random-ycor ] end to go if all? patches [pcolor = 69.9] [stop] ;; when all the grass is down to lowest level of richness if mean [ energy ] of patches <= 0 [stop] ;; when the grass is on average at or below 0 energy, stop ask cows [ eat-grass-cows move-turtles ] ask sheep [ eat-grass-sheep move-turtles ] ask chickens [ eat-bugs move-chickens ] update-patches tick end to move-turtles uphill-energy ;; turn towards richest grass in front three patches forward 1 if not can-move? 1 [ rt random 150 ] ;; if stuck against one edge turn around end to move-chickens ;; move towards most manure in front three patches uphill-nutrient forward 1 if not can-move? 1 [ rt random 150 ] ;; if stuck against one edge end to eat-grass-cows ifelse energy >= 5 [ ;; if there's enough energy/grass for a full meal set energy energy - 5 ;; eat grass set manure manure + 6 ;; deposit manure ] [ ;; if there isn't enough energy/grass for a full meal set manure manure + energy * 1.2 ;; deposit manure in proportion to how much energy/grass there is set energy 0 ;; use up all the energy ] end to eat-grass-sheep ifelse (energy >= 1) [ ;; if there's enough energy/grass for a full meal set energy energy - 1 ;; eat grass set manure manure + 1.2 ;; deposit manure ] [ ;; if there isn't enough energy/grass for a full meal set manure manure + energy * 1.2 ;; deposit manure in proportion to how much energy/grass there is set energy 0 ;; use up all the energy ] end to eat-bugs if manure >= .05 and energy > 0 [ ;; scratch through manure, adding to decomposition set manure manure - .05 ;; I have no idea what this number should be, if even > 0 if (type-of-change = "linear") [set energy energy + .05] if (type-of-change = "nonlinear") [set energy energy + .16 / sqrt energy] ] if energy >= .2 [ ;; if there's enough energy/grass for a full meal set energy energy - .2 ;; eat grass set chicken-manure chicken-manure + .25 ;; deposit manure ] if energy < .2 [ ;; if there isn't enough energy/grass for a full meal set chicken-manure chicken-manure + energy * 1.2 ;; deposit manure in proportion to how much energy/grass there is set energy 0 ;; use up all the energy ] end to update-patches ask patches [ if manure >= .25 and energy > 0 [ ;; manure decays on its own, enriching grass, but only if there's still grass left set manure manure - .25 if (type-of-change = "linear") [set energy energy + .25] if (type-of-change = "nonlinear") [set energy energy + .8 / sqrt energy] ] if manure < .25 and energy > 0 [ ;; if there's very little manure set energy energy + manure ;; increase energy by amount of manure (use manure up) set manure 0 ] if chicken-manure >= .25 and energy > 0 [ set chicken-manure chicken-manure - .25 if (type-of-change = "linear") [set energy energy + .25] if (type-of-change = "nonlinear")[set energy energy + .8 / sqrt energy] ] if chicken-manure < .25 and energy > 0 [ ;; if there's very little chicken-manure set energy energy + chicken-manure ;; increase energy by amount of manure (use manure up) set chicken-manure 0 ] set nutrient manure + chicken-manure recolor-patch ] end ;; set colour of patch paler or darker according to richness, but not to black or white, so we can still see the livestock to recolor-patch if energy < 1 [ set pcolor 69.9 ] if energy > 1 [ if energy <= 3 [ set pcolor 69 ]] if energy > 3 [ if energy <= 5 [ set pcolor 68 ]] if energy > 5 [ if energy <= 7 [ set pcolor 67 ]] if energy > 7 [ if energy <= 9 [ set pcolor 66 ]] if energy > 9 [ if energy <= 11 [ set pcolor 65 ]] if energy > 11 [ if energy <= 13 [ set pcolor 64 ]] if energy > 13 [ if energy <= 15 [ set pcolor 63 ]] if energy > 15 [ set pcolor 62 ] end ;; move towards patch ahead with most manure to uphill-nutrient let manure-ahead nutrient-scent-at-angle 0 let manure-right nutrient-scent-at-angle 45 let manure-left nutrient-scent-at-angle -45 ;; if all patches ahead are equally rich, wiggle if (manure-right = manure-ahead) and (manure-left = manure-ahead) [ wiggle ] ;; if patches ahead vary in richness, go to richest if (manure-right > manure-ahead) or (manure-left > manure-ahead) [ ifelse manure-right > manure-left [ rt 45 ] [ lt 45 ] ] end ;; move randomly ahead to wiggle right random 90 left random 90 end ;; move towards richest patch of grass ahead to uphill-energy let energy-ahead energy-scent-at-angle 0 let energy-right energy-scent-at-angle 45 let energy-left energy-scent-at-angle -45 ;; if all patches ahead are equally manured, wiggle if (energy-right = energy-ahead) and (energy-left = energy-ahead) [ wiggle ] ;; if patches ahead vary in richness of manure, go to richest if (energy-right > energy-ahead) or (energy-left > energy-ahead) [ ifelse energy-right > energy-left [ rt 45 ] [ lt 45 ] ] end ;; check out which patch ahead has the most manure (cribbed from ants) to-report nutrient-scent-at-angle [angle] let p patch-right-and-ahead angle 1 if p = nobody [ report 0 ] report [manure] of p end ;; check out which patch ahead has the richest grass (cribbed from ants) to-report energy-scent-at-angle [angle] let p patch-right-and-ahead angle 1 if p = nobody [ report -5 ] report [energy] of p end
There is only one version of this model, created over 7 years ago by Sarah Robertson.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Grazing.png | preview | Preview for 'Grazing' | over 7 years ago, by Sarah Robertson | Download |
This model does not have any ancestors.
This model does not have any descendants.