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 almost 6 years ago

dynamic population 

Tagged by Stuart Kininmonth almost 6 years ago

fisheries 

Tagged by Stuart Kininmonth almost 6 years ago

marine reserves 

Tagged by Stuart Kininmonth almost 6 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.0.1 • Viewed 644 times • Downloaded 34 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.)


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

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 about 6 years ago by Stuart Kininmonth.

Attached files

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

This model does not have any ancestors.

This model does not have any descendants.