Sheep&CattleHerdDynamics

Sheep&CattleHerdDynamics preview image

1 collaborator

Default-person Jamie Joyce (Author)

Tags

archaeology 

Tagged by Jamie Joyce over 2 years ago

population dynamics 

Tagged by Jamie Joyce over 2 years ago

Visible to everyone | Changeable by the author
Model was written in NetLogo 5.3.1 • Viewed 171 times • Downloaded 9 times • Run 0 times
Download the 'Sheep&CattleHerdDynamics' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Comments and Questions

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

Click to Run Model

globals [
  CFR ;; quantity (kg) of fodder required by cattle herd from current step
  SFR ;; quantity (kg) of fodder required by sheep herd from current step
  CLR ;; area (ha) of land required by cattle herd from current step
  SLR ;; area (ha) of land required by sheep herd from current step
  LR ;; total pastureland (ha) required by both herds from current step
  LB ;; total labour (hrs) required to produce fodder required by both herds from current step
  LBL ;; list of LB values
  MC ;; manure (kg) collected from cattle herd from current step
  R ;; total number of steps per run of model
  AMP ;; average meat (kg) produced by cattle and sheep herd from previous 10 steps
  AMkP ;; average milk (l) produced by cattle and sheep herd from previous 10 steps
  AWP ;; average wool (kg) produced by sheep herd from previous 10 steps
  Cal ;; total calories (kcal) available from milk and meat produced from current step
  CPYC ;; number of cattle remaining at end of previous step
  CTYC ;; number of cattle remaining at end of current step
  SPYC ;; number of sheep remaining at end of previous step
  STYC ;; number of sheep remaining at end of current step
  CGR ;; population growth rate of cattle herd
  CGRL ;; list of CGR values
  CAGR ;; average growth rate of cattle herd per ten steps
  CMP ;; meat (kg) produced by cattle herd from current step
  CMPL ;; list of CMP values
  CMkP ;; milk (l) produced by cattle herd from current step
  CMkPL ;; list of CMkP values
  SGR ;; population growth rate of sheep herd
  SGRL ;; list of SGR values
  SAGR ;; average growth rate of sheep herd per ten steps
  SMP ;; meat (kg) produced by sheep herd from current step
  SMPL ;; list of SMP values
  SMkP ;; milk (l) produced by sheep herd from current step
  SMkPL ;; list of SMkP values
  SWP ;; wool (kg) produced by sheep herd from current step
  SWPL ;; list of SWP values
  CAM ;; number of dead adult cattle from current step
  CIM ;; number of dead immature cattle from current step
  CYM ;; number of dead young cattle from current step
  CNM ;; number of dead newborn cattle from current step
  SAM ;; number of dead adult sheep from current step
  SIM ;; number of dead immature sheep from current step
  SYM ;; number of dead young sheep from current step
  SNM ;; number of dead newborn sheep from current step
  MP ;; total meat (kg) produced by cattle and sheep herds from current step
  MkP ;; total milk (l) produced by cattle and sheep herds from current step
  MPL ;; list of MP values
  MkPL ;; list of Mk values
  C ;; number of ticks
  AWS ;; adult sheep weight
  AWC ;; adult cow weight
  IWS ;; immature sheep weight
  IWC ;; immature cow weight
  YWC ;; young cow weight
  YWS ;; young sheep weight
  SWY ;; annual sheep wool yield
  SMY ;; annual sheep milk yield
  CMY ;; annual cow milk yield
  catastrophe? ;; records whether a castrophic event has occured
  SLE ;; sheep life expectancy
  CLE ;; cow life expectancy
  NCM ;; newborn cattle mortality rate
  NSM ;; newborn sheep mortality rate
]
breed [ ;; creates the various breeds for the two types of animals based on age group
  adultcows adultcow
]
breed [
  immaturecows immaturecow
]
breed [
  youngcows youngcow
]
breed [
  newborncows newborncow
]
breed [
  adultsheeps adultsheep
]
breed [
  immaturesheeps immaturesheep
]
breed [
  youngsheeps youngsheep
]
breed [
  newbornsheeps newbornsheep
]
turtles-own [ ;; stores age of individual animal and whether or not the animal is lactating
  age
  lactating
]

to setup
  ca
  reset-ticks
  set C 0 ;; resets counter value to 0
  set LR 0 ;; resets land requirement to 0
  set R 100 ;; sets number of steps of the model to 100
  set catastrophe? "NO" ;; sets initial value for catastrophe? as no
  set CGRL ( n-values ( R + 1 ) [ 0 ] ) ;; following commands create the various list variables (see above), which comprises 100 empty items (one item per step therefore)
  set CMPL ( n-values R [ 0 ] )
  set CMkPL ( n-values ( R + 1 ) [ 0 ] )
  set SGRL ( n-values (R + 1) [ 0 ] )
  set SMPL ( n-values (R + 1)  [ 0 ] )
  set SMkPL ( n-values (R + 1)  [ 0 ] )
  set SWPL ( n-values (R + 1)  [ 0 ] )
  set MkPL ( n-values ( R + 1 ) [ 0 ] )
  set MPL ( n-values ( R + 1 ) [ 0 ] )
  set LBL ( n-values ( R + 1 ) [ 0 ] )
  set AWS 25 ;; sets weight of adult sheep as 25kg
  set AWC 200 ;; sets weight of adult cattle as 200kg
  set IWS 15 ;; sets weight of immature sheep as 15kg
  set IWC 75 ;; sets weight of immature cattle as 75kg
  set YWC 35 ;; sets weight of young cattle as 35kg
  set YWS 7.5 ;; sets weight of young sheep as 7.5kg
  set SWY 2 ;; sets annual yield of fleece from adult/immature sheep as 2kg
  set SMY 60 ;; sets annual milk yield of adult lactating sheep as 60l
  set CMY 150 ;; sets annual milk yield of adult lactating cattle as 150l
  set SLE 10 ;; sets maximum age of sheep as 10 years
  set CLE 20 ;; sets maximum age of cattle as 20 years
  set NCM 0.3 ;; sets newborn mortality rate of cattle as 30%
  set NSM 0.3 ;; sets newborn mortality rate of sheep as 30%
  create-adultcows 10 [ ;; following commands create turtles of various breeds and assigns a random age for each individual within the ranges assumed per animal species and age cohort
    set age 4 + random 16
  ]
  create-immaturecows 10 [
    set age one-of [ 1 2 3 ]
  ]
  create-youngcows 10 [
    set age 0
  ]
  create-adultsheeps 10 [
    set age 2 + random 8
  ]
  create-immaturesheeps 10 [
    set age 1
  ]
  create-youngsheeps 10 [
    set age 0
  ]
end 

to go
  if count turtles = 0 [ ;; model does not run if there are no turtles
    stop
  ]
  if ticks = R [ ;; model does not run if number of ticks exceeds the runtime (100 steps)
    stop
  ]
  set CPYC ( count adultcows + count immaturecows + count youngcows ) ;; sets the value for CPYC (count previous year cattle) as the current number of cattle
  set SPYC ( count adultsheeps + count immaturesheeps + count youngsheeps ) ;; sets the value for SPYC (count previous year sheep) as the current number of sheep
  set CAM 0 ;; following commands reset the number of animals that have died to 0 at the beginning of each step
  set CIM 0
  set CYM 0
  set SAM 0
  set SIM 0
  set SYM 0
  set CNM 0
  set SNM 0
  set MC 0 ;; resets the manure yield of cattle to 0 at the beginning of each step
  set Cal 0 ;; resets the number of calories yielded by the herds to 0 at the beginning of each step
  set CFR 0 ;; following commands reset the fodder requirement of sheep and cattle to 0 at the beginning of each step
  set SFR 0
  GoEpidemic
  GoAnimals
  GoFodder
  GoLand
  GoManure
  GoGrowthRate
  GoProduction
  GoCalories
  set C C + 1 ;; increases value for counter by 1 at end of each step
  tick
end 

to GoEpidemic
  if enable-catastrophe? = "TRUE"[ ;; following commands only called if value for enable-catastrophe switch is TRUE
    if catastrophe? = "NO" [ ;; following commands only called if value for global variable catastrophe? is NO, i.e. catastrophic event has not occured yet during model's run
      if count turtles with [ breed != newbornsheeps and breed != newborncows ] >= 50 [ ;; following commands only called if number of animals >= 50
        ask n-of ( count turtles * 0.9 ) turtles [ ;; kills 90% of all turtles
          die
        ]
        set catastrophe? "YES" ;; sets value for catastrophic event to "YES" to prevent further catastrophic events reoccuring during model's run
      ]
    ]
  ]
end 

to GoAnimals
  ask adultsheeps [ ;; following commands simulate reproduction by adult sheep of newborn sheep according to probability of birthing (i.e. value for SBa).
    set lactating "N"
    if random-float 1 < SBa [
      hatch 1 [
        set breed newbornsheeps
        set age 0
      ]
      set lactating "Y" ;; sets value for lactating of any adult sheep that has reproduced to "Y" i.e. yes
    ]
    if random-float 1 < sheep-adult-mortality [ ;; simulates death of adult sheep according to probability of occurence
      set SAM SAM + 1 ;; if adult sheep dies, value for SAM is increases by 1
      die
    ]
    set age age + 1 ;; if adult sheep survives, age is increased by 1
    if age > SLE [ ;; if age of adult sheep exceeds life expectancy, the animal is killed
      die
    ]
  ]
  ask adultcows [
    set lactating "N"
    if random-float 1 < CBa [ ;; simulates reproduction by adult cattle, process not different to that of sheep (see above)
      hatch 1 [
        set breed newborncows
        set age 0
      ]
      set lactating "Y"
    ]
    if random-float 100 / 100 < cow-adult-mortality [ ;; simulates death of adult cattle (see description of process affecting adult sheep above)
      set CAM CAM + 1
      die
    ]
    set age age + 1
    if age > CLE [
      die
    ]
  ]
  ask immaturesheeps [ ;; following commands simulate death of individual animals according to probabilities of mortality per species and per age cohort (see mortality processes of adult cattle and sheep above)
    if random-float 100 / 100 < sheep-immature-mortality [
      set SIM SIM + 1
      die
    ]
    set age age + 1
    set breed adultsheeps
  ]
  ask immaturecows [
    if random-float 100 / 100 < cow-immature-mortality [
      set CIM CIM + 1
      die
    ]
    set age age + 1
    if age = 4 [
      set breed adultcows
    ]
  ]
  ask youngsheeps [
    if random-float 100 / 100 < sheep-young-mortality [
      set SYM SYM + 1
      die
    ]
    set age age + 1
    set breed immaturesheeps
  ]
  ask youngcows [
    if random-float 100 / 100 < cow-young-mortality [
      set CYM CYM + 1
      die
    ]
    set age age + 1
    set breed immaturecows
  ]
  ask newbornsheeps [
    if random-float 100 / 100 < NSM [
      set SNM SNM + 1
      die
    ]
    set age age + 1
    set breed youngsheeps
  ]
  ask newborncows [
    if random-float 100 / 100 < NCM [
      set CNM CNM + 1
      die
    ]
    set age age + 1
    set breed youngcows
  ]
end 

to GoFodder ;; calculates fodder required (kg) by cattle and sheep herds
    set CFR ( count adultcows * ( 800 * ( AWC / 200 ) ) + count immaturecows * ( 800 * ( IWC / 200 ) ) + count youngcows * ( 800 * ( YWC / 200 ) ) ) ;; sets fodder required by cattle herd
    set SFR ( count adultsheeps * (306 * ( AWS / 30 ) ) + count immaturesheeps * ( 306 * ( IWS / 30 ) ) + count youngsheeps * ( 306 * ( YWS / 30 ) ) ) ;; sets fodder required by sheep herd
    set LB ( ( CFR + SFR ) / 3000 * 4 ) ;; sets labour in hours required to produce fodder
    set LBL replace-item C LBL LB ;; adds value calculated above to list LBL
end 

to GoLand ;; calculates pasture land required by cattle and sheep
  set SLR ( ( count adultsheeps + count immaturesheeps + ( count youngsheeps * ( 11 / 12 ) * 0.5 ) ) + ( SFR / 3000 ) ) / 7.5 ;; sets pasture land required by sheep herd
  set CLR ( ( count adultcows + count immaturecows + ( count youngcows * ( 7 / 12 ) * 0.5 ) ) ) * 8 / 12 + ( CFR / 3000 ) / 3 ;; sets pasture land required by cattle herd
  set LR ( SLR + CLR ) ;; sets value for total pastureland required
end 

to GoManure ;; calculates quantity of manure (kg) produced by cattle herd for four months during winter
  let manure-output-cow ( ( count adultcows * ( AWC * 0.075 ) ) + ( count immaturecows * ( IWC * 0.075 ) ) + ( count youngcows * ( YWC * 0.075 ) ) ) ;; calculates manure output per day of cattle herd
  set MC manure-output-cow * 240 ;; calculates manure output of cattle herd for total period of time manure available (four months during winter, plus nights for remainder of the year)
end 

to GoProduction
  set CMP ( CAM * ( AWC * 0.3 ) + CIM * ( IWC * 0.35 ) + CYM * ( YWC * 0.4 ) ) ;; calculates quantity of meat (kg) produced by cattle herd as number of dead animals adjusted for % of carcass edible
  set CMPL replace-item C CMPL CMP ;; updates list CMPL with value calculated above
  set CMkP ( ( count adultcows with [ lactating = "Y" ] ) * CMY ) ;; calculates quantity of milk (l) produced by cattle herd
  set CMkPL replace-item C CMkPL CMkP ;; updates list CMkPL with value calculate above
  set SMP ( SAM * ( AWS * 0.3 ) + SIM * ( IWS * 0.35 ) + SYM * ( YWS * 0.4 ) ) ;; calculates quantity of meat (kg) produced by shee[ herd as number of dead animals adjusted for % of carcass
  set SMPL replace-item C SMPL SMP ;; updates list CMPL with value calculated above
  set SMkP ( ( count adultsheeps with [ lactating = "Y" ] ) * SMY ) ;; calculates quantity of milk (l) produced by cattle herd
  set SMkPL replace-item C SMkPL SMkP ;; updates list CMPL with value calculated above
  set SWP ( ( count adultsheeps + count immaturesheeps ) * SWY );; calculates quantity of wool (kg) produced by sheep herd
  set SWPL replace-item C SWPL SWP ;; updates list CMPL with value calculated above
  set MP ( CMP + SMP ) ;; calculates total meat produced by both herds
  set MPL replace-item C MPL MP ;; updates list CMPL with value calculated above
  set MkP ( CMkP + SMkP )
  set MkPL replace-item C MkPL MkP ;; updates list CMPL with value calculated above
  if C > 9 [ ;; calculates average output of meat, milk and wool every ten steps
    set AMP mean  ( sublist MPL ( C - 9 ) ( C + 1 ) )
    set AMkP mean ( sublist MkPL ( C - 9 ) ( C + 1 ) )
    set AWP mean ( sublist SWPL ( C - 9) ( C + 1 ) )
    ]
end 

to GoGrowthRate ;; calculates % population growth rates of cattle and sheep herds
  set CTYC ( count adultcows + count immaturecows + count youngcows )
  if CTYC > 0 [
    set CGR ( 100 * ( CTYC - CPYC ) / CPYC )
    set CGRL replace-item C CGRL CGR
  ]
  if C > 8 [
    set CAGR mean ( sublist CGRL ( C - 9 ) ( C + 1 ) )
  ]
  set STYC ( count adultsheeps + count immaturesheeps + count youngsheeps )
  if STYC > 0 [
    set SGR ( 100 * ( STYC - SPYC ) / SPYC )
    set SGRL replace-item C SGRL SGR
  ]
  if C > 8 [
    set SAGR mean ( sublist SGRL ( C - 9 ) ( C + 1 ) )
  ]
end 

to GoCalories ;; calculates total calories supplied by milk and meat output of sheep and cattle herds
  set Cal ( (CMP * 0.6 * 1700 ) + ( CMP * 0.3 * 8000 ) + ( CMP * 2000 * 0.1 ) + ( SMP * 0.7 * 2930) + ( SMP * 0.2 * 6000 ) + ( SMP * 0.1 * 2000 ) )
end 

There is only one version of this model, created over 2 years ago by Jamie Joyce.

Attached files

File Type Description Last updated
Sheep&CattleHerdDynamics.png preview Preview for 'Sheep&CattleHerdDynamics' over 2 years ago, by Jamie Joyce Download

This model does not have any ancestors.

This model does not have any descendants.