FishDensityDependentGrowth
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model explores the effect of density on growth rates and age class populations. Each tick is analagous to a year. Fish increase in size (i.e,.total length) each year, which places the fish into a size class (adult, juvenile, or young of year). Adults can reproduce annually and when they do, they produce young of year fish. ADULT-MORTALITY is defined by the user except when an adult reaches 15 years of age, they die of old age. Juvenile and young of year mortality is set within the code.
HOW IT WORKS
The program was developed to explore two main variables.
The first vairable is related to density dependent growth effects on populations of population size. To explore this, the user defines "high density" and then ascribes a growth rate once that density has been exceeded.
The model counts the number of fish within a radius of 10 patches. If this value exceeds the DEFINE-HIGH-DENSITY then the DENSITY-DEPENDENT-GROWTH-RATE is used. The fish then increases in total length by that value. When user defined density is not exceeded (i.e., a low density environment) a fish will grow based on a Von Bertalanffy growth equation that is specific to Channel Catfish from the San Juan River (Pennock et al. 2018).
The second variable that can be explored, is changing the ADULT-MORTALITY rate. This rate can be kept constant throughout a run or changed while the model is running to assess how mortality rates effect the overall population and age class distribution.
The two plots, track the number of fish in each age class overtime. The second plot does not include the young of year totals. The number of fish in each age-class is also enumerated in monitor boxes.
HOW TO USE IT
SETUP produces 1000 young of year fish GO causes each fish to: -move -adults reproduce based on a probability, -each individual identifies the number of fish within its vicinity -each individual increases in size based on whether there is a low or high number of fish within the individual's vicinity -each individual has a probability of dying -each individual ages one year for each tick.
The model will halt when the population dies out or when it exceeds 10,000 individuals.
THINGS TO NOTICE
The population is highly sensitive to ADULT-MORTALITY and values greater than ~35% tend to crash the population.
THINGS TO TRY
Find the adult mortality rates that result in an increasing population, stability, or crash it. Then figure out the effect of density dependent growth rates on these patterns.
Set the model running and then change DEFINE-HIGH-DENSITY and see what crashes the population, what causes it to explode, and what results in stability. Do the same for changes in the DENSITY-DEPENDENT-GROWTH-RATE.
EXTENDING THE MODEL
-Reduce adult mortality as adult density varies (i.e., make it harder for fishermen to remove adults from the populaiton when there are less adults to find) -Add code so 10% of age 3, 50% of age 4, and 75% of >= age 5 female fish reproduce -Add a function of fecundity and size example: log10 (fecundity) = [log10(total-length) x 2.443] - 2.318 -Recode to run the fish in parallel like the termites model
NETLOGO FEATURES
I used "set density count other fishes in-radius 10" and there may be better ways to determine the density of fish around a given individual
RELATED MODELS
Wolf Sheep Predation model.
CREDITS AND REFERENCES
Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Pennock, C. A., Durst, S. L., Duran, B. R., Hines, B. A., Cathcart, C. N., Davis, J. E., ... & Franssen, N. R. (2018). Predicted and observed responses of a nonnative Channel Catfish population following managed removal to aid the recovery of endangered fishes. North American Journal of Fisheries Management, 38(3), 565-578.
Comments and Questions
globals ;; used to track the three size classes [red-count blue-count yellow-count ] breed [ fishes fish] fishes-own [total-length ;; length or size of fish density ;; number of neighbors within a radius fish-age ;; age of fish at each tick ] to setup ca set-default-shape fishes "fish" create-fishes 1000 [setxy random-xcor random-ycor set total-length 0 set fish-age 0 set color yellow ] reset-ticks end to go if not any? fishes [user-message "All Fish Die" stop] ;; stops the model when all fish die if count fishes > 10000 [user-message "Population Explosion Model Stops" stop] ;; stops the model when population bigger than a potential carrying capacity ask fishes [ move ;;spreads fish out and creates density parameters for growing season and idealized as occuring spring/summer reproduce ;;idealized as occurring that spring determine-grow ;;fish don't grow if they are at their maximum size identify-density ;;quanitfies how many fish there are around the individual fish size-class ;;based on the fishes' total-length a size-class is assigned (juvenile, sub-adult, adult), this would be assigned as the size-class in the fall age ;;fish ages a year and in the fish world the fish is the next year older starting January 1 death ;;occurs as a probability or after it has reached its oldest possible age ] tick end to death;;;; if fish-age = 15 [die] if color = yellow [if random-float 100 < 75 [die]] ;; mortality rate of young of year (value has not been validated) if color = red [if random-float 100 < 40 [die]] ;; mortality rate of juveniles if color = blue [if random-float 100 < adult-mortality [die]] ;; mortality rate of adults set by user end to reproduce if total-length > 300 [if random-float 100 < 50 ;; assumes a 1:1 male female ratio so half of population (i.e., females) would have the ability to reproduce [hatch 5 ;; number of young of year produced by each female (value has not been validated) [rt random-float 360 fd 5 ;; randomly moves the hatched fish set total-length 10 ;; young of year size set to 10 mm set color yellow ;; young of year color set to yellow set size 1 ;; set pixel size set fish-age 0] ;; all reproduced fish are 0 years of age ] ] end to move ;; fish move randomly within environment as fish would normally do and this changes the density in which they find themselves rt random 0.5 lt random 0.5 fd random 10 end to determine-grow if total-length < 810 [grow] ;; fish stop growing when the reach 810 mm in length end to identify-density ;; counts the number of fish including self within the surrounding 10 patches set density count other fishes in-radius 10 with [color = blue or color = red] end to grow if density < Density-threshold [set total-length 810 * (1 - exp (-0.089 * (fish-age - (-2.378))))] ;;Density-threshold set by user if density > Density-threshold [set total-length 810 * (1 - exp (-(K-coeff) * (fish-age - (-2.378))))] ;;K coefficient set by user end to size-class ;; sets size class color based on size/total-length if total-length >= 300 [set color blue] if total-length >= 300 [set size 2] if total-length < 300 and total-length >= 150 [set color red] if total-length < 300 and total-length >= 150 [set size 1.5] if total-length < 150 [set color yellow] if total-length < 150 [set size 0.5] end to age set fish-age fish-age + 1 end
There is only one version of this model, created over 2 years ago by Eliza Gilbert.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.