fisheries and reserves
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
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.