Grazing

Grazing preview image

1 collaborator

Default-person Sarah Robertson (Author)

Tags

farming 

Tagged by Sarah Robertson about 8 years ago

grazing 

Tagged by Sarah Robertson about 8 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.1 • Viewed 712 times • Downloaded 47 times • Run 0 times
Download the '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 is a model of livestock grazing in pasture. Sheep and cattle graze on grass and deposit manure. Chickens scratch through the manure and eat the bugs, as well as depositing their own manure. In real life, proper grazing – rotating animals in this way – leads to rich soils and abundant plants, with soil buildup of 1-2" per year and dramatic increases in plant growth. Obviously, this model is a vast oversimplification. In real life, the farmer moves animals from one patch to another in a standard order, controlling the degree of grazing. Here they're allowed to go where they want. The farmer also controls population levels, so there is no need to model that here.

HOW IT WORKS

The cattle and sheep are drawn to darker (richer) grass. They eat the grass, and the energy score goes down. They deposit manure, the nutrient score goes up slightly more* than the energy score went down. The score changes are 5x greater for cattle than for sheep because they are larger. The animal then looks around to see where there is darker grass ahead, and moves in that direction.

The chickens are drawn to the cow and sheep manure. They scratch through the manure and eat the bugs, decreasing the nutrient score and increasing the energy score by speeding up decomposition of the manure. They also eat grass and deposit their own manure, increasing the nutrient score slightly more* than decreasing the energy score. Then they look ahead to see where there is darker grass, and head in that direction. Chickens eat less nutrients and deposit less manure than sheep do (20% of the sheep value in each case).

Regardless of whether an animal is on a patch or not, if there is any manure, it gradually decomposes and the energy score goes up the same amount the nutrient score goes down*.

The darker the grass, the more abundant it is. Patch colour becomes darker green with higher energy levels and lighter green with lower energy levels, but never goes to black or white so the livestock remain visible.

The space is a field, so it does not wrap. If livestock hit the edge and can't move forward, they rotate randomly to the right anywhere up to 150°.

The model stops if the average patch energy is at or below 0, or if all patches have the lightest colour.

*This amount is a guess. I have no idea what the real numbers would be. Energy increase would depend on how depleted the grass/soil is.

HOW TO USE IT

Choose which species you want to graze, and how many of each.

Click SETUP to scatter the livestock randomly about the field and set up the grass.

Click GO to run the model. Watch the colour of the grass to see how well it's doing. Watch what happens with different numbers and combinations of each species.

TYPE-OF-CHANGE chooses whether you want to measure linear or nonlinear change in the land. With linear change, the grass improves a uniform amount no matter how degraded/rich the soil is to start with, while with nonlinear change, degraded grass improves more than rich grass.

MEAN ENERGY indicates the mean level of energy of the grass (how rich it is).

THINGS TO NOTICE

Can the area be overgrazed? Can the grazing improve the grass in the long run? If so, does the grass get worse before it gets better?

Do the animals spread out or concentrate in particular areas? Can you see why farmers might want to make animals graze on one smaller patch at a time to spread out the effects?

THINGS TO TRY

Try different combinations of animals to see how many animals are good or bad for the land. What happens when there are too many animals? What happens when there are too few animals (e.g. only one sheep)?

EXTENDING THE MODEL

The average cow is about 10x larger than a sheep, which is about 10x larger than a chicken. (This is very approximate.) So, using the power law with respect to metabolism, a cow will eat about 5.6 times as much as a sheep (10⋀.75), and a sheep about 5.6 times as much as a chicken. I've used 5 times in this model, but you can fiddle with it to see what you get. You may want to take into account which breeds of cattle, sheep and chickens you want to model, since some are bigger than others.

The effect of the manure and of the chickens going through the manure are an educated guess – they are qualitative rather than quantitative. If there were actual data available (I'm not aware of any but it may exist) then you could modify the model to produce more accurate changes.

You can add energy or nutrient labels to see how they change. However, they may have multiple decimal points so be hard to read. "ask patches [set plabel precision energy 0]" will round up to the nearest whole number, and you can also use a smaller font on larger patches.

If you know a lot about livestock food preferences, you could differentiate between different species of plants and what gets eaten by which types of livestock. You could also add more species of livestock.

You could also make every agent a flock or herd rather than an individual, and scale their effect based on their size. This way, you could move your herds/flocks around from one section to another of your land as a group, instead of just letting each individual go where it wants. If you were really ambitious, you could use a GIS of your actual farm, with patches scaled accordingly (you can change the number and size of patches under settings on the interface tab), and scale the metabolic requirements to the actual average weights of the breeds/species you farm.

NETLOGO FEATURES

I drew a chicken! (It's red because cool climate chickens tend to be red. And yes, I know it looks more like a duck.)

RELATED MODELS

The Wolf Sheep Predation model is similar in the sense that the sheep are eating the grass, and the grass recovers over time.

CREDITS AND REFERENCES

Suggested reading: Mark Shepard, 2013. Restoration agriculture: Real world permaculture for farmers. Lierre Kieth, 2009. The vegetarian myth: Food, justice, and sustainability. Joel Salatin, 1998. You can farm: The entrepreneur's guide to start & succeed in a farming enterprise.

Two online examples of chickens and grass growth: http://tcpermaculture.com/site/2017/04/15/positive-poultry-impact/ https://www.youtube.com/watch?v=t4R3IsWzg8M

Developed on NetLogo 6.0.1 Anemone Cerridwen, 2017

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 about 8 years ago by Sarah Robertson.

Attached files

File Type Description Last updated
Grazing.png preview Preview for 'Grazing' about 8 years ago, by Sarah Robertson Download

This model does not have any ancestors.

This model does not have any descendants.