fisheries and reserves

fisheries and reserves preview image

4 collaborators

Eyram Apetcho (Advisor)
Fi Prowe (Advisor)
Anna Luzenczyk (Advisor)

Tags

conservation 

Tagged by Stuart Kininmonth about 12 years ago

dynamic population 

Tagged by Stuart Kininmonth about 12 years ago

fisheries 

Tagged by Stuart Kininmonth about 12 years ago

marine reserves 

Tagged by Stuart Kininmonth about 12 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.0.1 • Viewed 1149 times • Downloaded 64 times • Run 0 times
Download the 'fisheries and reserves' 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 predator-prey model, with fishing boats as predators and minnows as prey and plankton as food source. The minnows also feed on plankton, which is continuously regenerated. The difference between this and other predator prey models is that there are options to (a) have the fishing boats hunt minnows (b) have the minnows try to escape from the boats and (c) let the minnows school. Plus there is the option of modifying the behaviour of the fishing boats by adding in no-fish reserves. There is quantitatively different population dynamics when each of these options is selected. This model therefore serves to show the versatility of agent based modeling in complex population dynamics.

HOW IT WORKS

Without hunting, evading or schooling, the predator-prey part of the model works as follows. Fishing boats and minnows move about at random, when a boat finds itself on the same patch as a minnow it consumes it and gains some food-energy. Minnows are constantly grazing on available plankton and gaining energy if they find some. Plankton is replenished at a particular rate. Boats and minnows also lose energy at a rate determined by their fuel consumption/metabolism and at a rate proportional to their speed. In this way a faster speed is more costly. If minnows gain enough energy they produce one offspring, giving it losing an amount of energy called birth-energy, and giving it to their offspring. If the energy of a minnow falls below 0 they die.

Hunting Option: If boats are allowed to hunt they swim at random unless they sense at least one minnow in a cone determined by their field of view and sight range. Then they try to turn towards the nearest of these minnows and move forward at a hunting speed, which is set by a slider. Their ability to turn is limited by a maximum turn angle.

Escaping Option: If minnows are allowed to escape, they swim at random unless they sense one or more boats in a cone determined by their field of view and sight range. In this case they turn away from the nearest of these boats and move forward at an escaping speed which is set by a slider. Their ability to turn is limited by a maximum turn angle called the escaping angle

Schooling Option: If minnows are allowed to school then they will try to do so provided they sense no boats. Schooling is governed by three behaviors: avoiding, approaching and aligning. First, if there is a fellow minnow that is too close (as determined by a safety range which is set by a slider), a minnow will avoid it by turning away from it and moving forward. If there is no minnow that is too close, then a minnow will look at all the minnows in its cone of view and attempt to change its heading towards each of them in turn. The angle that it can turn is weighted by how close the minnow is to it. It makes more of an effort to turn towards closer minnows. After doing this it will try to align itself with the same heading as all the minnows in its cone of view, again turning by at most an angle, which is weighted by how close the minnow is to it. This procedure is slightly different from other methods of mimicking flocking and schooling in that there is nothing probabilistic and there is no averaging of headings (see the flocking module in the NetLogo models library, for example).

HOW TO USE IT

Choose the initial populations, food energy, metabolism and birth-energy for the vessels and minnows, and choose a growth rate for the plankton. Then click setup and go. You may choose any of the options, hunting, escaping or schooling at anytime that it Is running. Each of these options has its own sliders that govern the behavior. You can set speeds for escaping and hunting, and you can set the parameters that govern schooling, including the turn angle, which determines the maximum amount a minnow can turn, the sight-range which is the distance a minnow can see, the field of view, and the safety range, which is the closest a minnow will approach an other minnow before trying to avoid it. You can also turn the minnow dynamics off if you want to study some behavior, such as schooling, without worrying about minnows dying or being born.

At anytime you can add a boat by clicking on the world view. You can remove boat or harvest minnows by clicking on the relevant buttons.

THINGS TO NOTICE

The dynamics can be quite complicated, and the survival of the boats and minnows can be quite sensitive to the parameter choices. As with most predator prey models, wild oscillations in population size occur quite often, and typically precede an extinction of one or both species. It should be possible to find parameter choices where the populations are relatively stable.

The escaping, hunting and schooling options can change the dynamics dramatically, but not always in the way expected. With escaping and hunting both on there are typically fewer wild oscillations in population, and minnow population tends to increase. With schooling turned on, there is only a noticeable difference in dynamics for cases where there are relatively few boats. When there are a lot of boats the minnows do not have much time to school.

THINGS TO TRY

Try finding parameter choices that lead to relatively stable populations of boats and minnows with the hunting, escaping and schooling options off. Now try adding each of these options in turn to see what happens. Try the same thing with different combinations of these options.

In particular try adding some no-fishing reserves. The boats can cross the reserves but no fishing is allowed. So it costs fuel to go into reserves, the more reserves the more energy is expended. the fish can however breed up in these spaces and you can find a set of parameters that allow the most fish numbers with the most boats given a number of reserves.

If you have oscillating population dynamics, try harvesting minnows and different times to see if you can stabilize the population.

EXTENDING THE MODEL

There are a lot of parameters in this model, not all of which are shown on the sliders. One might ask the question � what values of these parameters optimize the total numbers of minnows, what values optimize the total number of boats? One possible way to answer these questions would be to allow the parameters to change dynamically, by having new minnows and boats have slightly modified values of these parameters. Over time the values would change, and the �fittest� minnows and boats would emerge. This may or may not result in more minnows and boats.

RELATED MODELS

This model is adapted from David McAvity (Evergreen State College) model on shark-minnow population dynamics.

COPYRIGHT NOTICE

Copyright 2012 Stuart Kininmonth, Eyram Apetcho, Susanna Nurdjamman, Fi Prowe and Anna Luzenczyk.

This model was created at the IMBER workshop in Ankara, Turkey.

The model may be freely used, modified and redistributed provided this copyright is included and it not used for profit.

Contact Stuart Kininmonth at stuart.kininmonth@stockholmresilience.su.se if you have questions about its use.

Comments and Questions

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

Click to Run Model

breed [fishers fisher]
breed [herrings herring]

globals [
    starvations
    kills 
    boat-deaths
    drag-factor
    safe
    mean-energy
    ]
    
patches-own [
    plankton
    zone
    ]
    
turtles-own [
    energy 
    cruise-speed
    wiggle-angle
    turn-angle 
    metabolism
    birth-energy
    age
   ]
    
fishers-own [
    fisher-field-of-view 
    fisher-sight-range 
    ]

to setup
    ;; (for this model to work with NetLogo's new plotting features,
  ;; __clear-all-and-reset-ticks should be replaced with clear-all at
  ;; the beginning of your setup procedure and reset-ticks at the end
  ;; of the procedure.)
  __clear-all-and-reset-ticks
  set safe 1
    create-herrings herring-population [
        setxy random-xcor random-ycor
        set color grey
        set cruise-speed 1
        set shape "fish"
        set wiggle-angle 5
        set turn-angle 10 ;herring-turn-angle 
        set birth-energy 25 ;herring-birth-energy
        set energy random-float 100 
        set age random 200
        grow
    ]
    repeat fisher-population [make-fishers random-xcor random-ycor]
    ask patches [ set plankton random 3 ]
;; smooth out the plankton so the distribution is more homeogenous 
    repeat 5 [diffuse plankton 1 ]
    ask n-of zone_no patches [ set zone safe
                                      let targets patches in-radius zone_size
                                      ask targets [set zone safe]
                                      ]
    
;; scale the color of the patches to reflect the quantity of plankton on each patch
    ask patches [ set pcolor scale-color turquoise plankton 0 5 ]
    ;set fisher-deaths 0
    ;set starvations 0
    set drag-factor 0.5
    set kills 0
    set mean-energy 0
end 

to go ;; main procedure
;;  plankton growth. If there is less than the threshold amount of plankton on a patch regrow it with a particular probability determined 
;; by the growth rate. We also diffuse the plankton to allow for the fact that plankton drift.
   ask patches [
       if (plankton < 5) [
           ;if ((random-float 100) < plankton-growth-rate) [ 
           ;   set plankton plankton  + 1  ] 
           set plankton plankton  + 1 ;plankton-growth-rate   ;growth rate on slider between 0 and 2 maybe
           ]  
       ]
   diffuse plankton 1        
;; scale the color of the patches to reflect the quantity of plankton on each patch
   ask patches [ ifelse (zone = safe) [
       set pcolor green
   ]
   [
     set pcolor scale-color turquoise plankton 6 0
   ]
     ] 

;; main minnow procedures   
    ask herrings [
        swim
        feed   ]
    ;if (herring-dynamics?) [
      ask herrings [ birth ] ;death ]
    ;]
    
 ;; main boat procedures
    ask fishers [ hunt ]
    ;if fisher-dynamics? [ ask fishers [ birth death ]]
    do-plots
    if kills > 2000 [stop]
    tick
end 


;; create boats with the following paramter values. These values could be set with sliders
;; but it would make for crowded interface

to make-fishers [x y]
        create-fishers 1 [
            set heading random 360
            setxy x y
            set size 4
            set shape "boat"
            set wiggle-angle 5
            set turn-angle 10
            set fisher-sight-range 10
            set fisher-field-of-view 120
            set cruise-speed 1.5
            set energy 100
            set metabolism 0.3
            set birth-energy 25 ;fisher-birth-energy
            set color red
       ] 
end 

;; main minnow procedure governing movement and loss of energy

to swim 
        set energy energy - metabolism
        let danger fishers in-cone sight-range field-of-view 
        ifelse ((any? danger) and escaping?)
          [set turn-angle herring-turn-angle * 3  ;; the turn angle for escaping is larger than normal by a factor of 3
           avoid min-one-of danger [distance myself ]
            fd escape-speed 
            set energy energy - escape-speed * drag-factor ]
          [ifelse schooling? [school][cruise]
      ]
end  


;; minnow or boat procedure which determines random motion when no predators or prey are near.

to cruise
   rt random wiggle-angle 
   lt random wiggle-angle
   fd cruise-speed
   set energy energy - cruise-speed * drag-factor
end 

to hunt 
    set energy energy - metabolism
    let prey herrings in-cone fisher-sight-range fisher-field-of-view
    
    ifelse (([zone] of patch-here) = safe) 
    [
      
      
     
      cruise ]
    [
    ifelse ( any? prey )
        [ let targets prey in-radius 2 ;; minnows are eaten if they are with a radius of 2
          ifelse any? targets
          
              [ let totcatch sum [energy] of targets
                
                set kills kills + count targets 
                ask n-of (count targets) targets [die]
                set energy energy + totcatch  * 0.5 
                set mean-energy mean-energy + sum [energy] of fishers]
              [ ifelse hunting?  ;; if minnows are not close enough head towards them
                  [ approach min-one-of prey [distance myself] 
                    fd hunt-speed
                    set energy energy - hunt-speed * 4 ]
                  [ cruise ]  ;; if you are not hunting cruise around
               ] 
        ]  
        [ cruise ] ;; if you can't see any minnows just cruise around
    ]
end 


;; minnow procedure governing schooling behaviour

to school
    let schoolmates herrings in-cone sight-range field-of-view with [distance myself > 0.1 ]
    ifelse any? schoolmates                                   ;; minnows you can see
        [let buddy min-one-of schoolmates [distance myself]   ;; closest minnow you can see
         ifelse distance buddy  < safety-range 
             [ set turn-angle herring-turn-angle           ;; avoid minnow if it is too slose
               avoid buddy  
             ]
 ;; if nobody is too close then turn towards each of the schoolmates in turn, by an angle that exponentially
 ;; decrease with distance. This ensures that the minnow is more influenced by closer minnows. After making these turns 
 ;; then try to align to the headings of each of the schoolmates in turn by an angle that exponentially 
 ;; decreases with distance.

             [ foreach sort schoolmates [  
                  set turn-angle herring-turn-angle * exp( ((distance buddy) - (distance ?) ) )
                  approach ?
                  align ? 
                  ]
             ]
          fd cruise-speed
          set energy energy - cruise-speed * drag-factor ] ;; after making adjustements in heading move
        [cruise]   ;; if you can't see any other minnows just cruise around
end 

;; boat or minnow procedure to turn in the direction of a target turtle by at most the specified turn angle

to approach [target]
   let angle subtract-headings towards target heading
              ifelse (abs (angle) > turn-angle)
                  [ ifelse angle > 0 [right turn-angle ][left turn-angle] ]
                  [ right angle ] 
end 

;; minnow procedure to turn in the direction of the heading of a target turtle by at most the specified turn angle

to align [target]
   let angle subtract-headings [heading] of target heading
              ifelse (abs (angle) > turn-angle)
                  [ ifelse (angle > 0) [right turn-angle ][left turn-angle] ]
                  [ right angle ] 
end 

;; minnow procedure to turn in the direction away from a target turtle by at most the specified turn angle

to avoid [target]
   let angle subtract-headings ((towards target) + 180) heading
              ifelse (abs(angle) > turn-angle)
                  [ ifelse (angle > 0) [right turn-angle ][left turn-angle] ]
                  [ right angle ] 
end 


;; minnow procedure. If there is plankton on the patch eat it to gain energy and reduce the plankton count on the patch.

to feed
    if (plankton > 1) [
        set energy energy + 1 ; herring-food-energy
        set plankton plankton - 3 ]
end 

;; minnow and boat procedure if your enery exceeds a threshold hatch an offspring with energy = birth energy and
;; reduce your energy accordingly

to birth
    if (energy > 2 * birth-energy) [
        set energy energy - birth-energy
        hatch 1 [ 
           set energy birth-energy 
           set heading random 360
           fd cruise-speed ] ]
end 


;; minnow and boat procedure for removing turtles with energy below zero

to death
    ;; first check for random deaths
    let mort_rate 0.0
    let mort_check random-float 1
        ifelse (breed = herrings)
            [set mort_rate herrings_mort_rate]
            [set mort_rate herrings_mort_rate]
        if (mort_rate > mort_check) [ die ]
    
    ;; now check for metabolic death
    if energy < 0 [ 
        if (breed = herrings)
            [set starvations starvations + 1]
        ;    [set fisher-deaths boat-deaths + 1]
        die ]
end 

;; minnow procedure to color and size the minnows so that their age and energy are visually apparant

to grow
        ifelse (age > 300 )
           [set size 2 ]
           [set size 1 + age * 0.003 ]
       set color scale-color color (energy ) 0  (200 + birth-energy)
end 

to do-plots
  set-current-plot "Population"
    set-current-plot-pen "herrings"
    plot count herrings
    set-current-plot-pen "fishers"
    plot count fishers
    ;set-current-plot-pen "plankton"
    ;plot sum [plankton] of patches
    
    set-current-plot "energy"
    set-current-plot-pen "energy"
    plot sum [energy] of fishers
    set-current-plot-pen "kill"
    plot sum [energy] of herrings
    set-current-plot-pen "pen-1"
    plot 0
end 

There is only one version of this model, created over 12 years ago by Stuart Kininmonth.

Attached files

File Type Description Last updated
fisheries and reserves.png preview Preview for 'fisheries and reserves' over 12 years ago, by Stuart Kininmonth Download

This model does not have any ancestors.

This model does not have any descendants.