Download presentation
Presentation is loading. Please wait.
1
Autocorrelation around a stationary mean
2
Autocorrelation and stationary mean a lognormal “stationary walk”
CV in N Amount of autocorrelation Random process error Stationary mean in N 14 Rand autocorrel logn stationary.r, slightly modified code from Michael Wilberg Wilberg MJ & Miller TJ (2007) Comment on “Impacts of biodiversity loss on ocean ecosystem services”. Science 316: 1285b
3
Autocorrelation and stationary mean properties for large numbers of years
4
“Random” number seeds Computers cannot generate truly random numbers
Use a variety of ingenious methods to generate pseudo-random numbers that appear random Each requires a starting point (a random number “seed”) Successive numbers generated from the previous number in the sequence Sequence does not repeat for a very long time In R: set.seed(some.positive.number) picks a sequence Chapter 7 Press et al. (2007) Numerical Recipes. Cambridge University Press. 1235pp.
5
Different seeds, different CVs
Seed=5, CV=0.1,0.25,0.4 Seed=6, CV=0.1,0.25,0.4 Abundance Year Year 14 Rand autocorrel logn stationary.r
6
Application: assess validity of catch status plots
Froese R & Kesner-Reyes K (2002) Impact of fishing on the abundance of marine species. ICES paper CM 2002/L:12: 15pp Pauly D (2008) Global fisheries: a brief review. Journal of Biological Research-Thessaloniki 9: 3-9 Froese R, Zeller D, Kleisner K & Pauly D (2012) What catch data can tell us about the status of global fisheries. Mar. Biol. 159: Pauly D (2013) Does catch reflect abundance? Yes, it is a crucial signal. Nature 494:
7
Autocorrelated time series, fluctuating around a mean
Low variability High variability Relative catch Expect to see no trend over time! Percentage of stocks Year Branch et al. (2011) Conservation Biology 25:
8
Spatial models (meta-population models)
9
Readings Hilborn R et al. (2006) Integrating marine protected areas with catch regulation. CJFAS 63:
10
Why worry about space?
11
Dutch beam trawl fleet Netherlands England
Rijnsdorp AD et al. (1998) Micro-scale distribution of beam trawl effort in the southern North Sea between 1993 and 1996 in relation to the trawling frequency of the sea bed and the impact on benthic organisms. ICES Journal of Marine Science 55:
12
UK fisheries Beam trawlers Dredgers Netters Otter trawlers Potters
All combined Jennings S & Lee J (2012) Defining fishing grounds with vessel monitoring system data. ICES Journal of Marine Science 69:51-63
13
Ideal free distribution
Abundance (variable) CPUE (constant) Latitude (°N) Effort (variable) Longitude (°W) Swain DP & EJ Wade (2003) Spatial distribution of catch and effort in a fishery for snow crab (Chionoectes opilio): tests of predictions of the ideal free distribution. CJFAS 60:
14
MPA MPA Marine protected area (MPA) MPA MPA
Murawski SA et al. (2005) Effort distribution and catch patterns adjacent to temperate MPAs. ICES Journal of Marine Science 62:
15
Reason for “fishing the line”
Dollars per hour CV of dollars Hours trawled Minimum distance to a closed area (km) Murawski SA et al. (2005) Effort distribution and catch patterns adjacent to temperate MPAs. ICES Journal of Marine Science 62:
16
Why space matters Populations are not uniform
Exploitation is not uniform across space Local depletion can make exploitation more costly Unique attributes of subpopulations may be lost (genetic, behavior, migration, etc.)
17
Metapopulation models
A metapopulation is a series of discrete populations that are isolated but have limited exchange.
18
Generalized metapopulation model
Emigration: movement out of area i into area j Numbers in area i in time t Immigration: movement from area j into area i Environmental conditions in area i in time t
19
Important details A model of population change (dynamics) in each area
A model of dispersal among areas A model for uncertain events (e.g. environmental changes) What happens at the boundaries?
20
Boundaries? Absorbing boundary Reflective boundary
Disappear/die on hitting the boundary E.g. another country, advection into open ocean, natural range bounds Reflective boundary Pile up in the cell next to the boundary E.g. mountain range, river barrier Pac-man (circular coastline) Reappear on the opposite side E.g. circumpolar, islands
21
One-dimensional logistic-growth model with harvesting
Numbers in area i in time t Logistic model Density dependence Exploitation rate Harvest Immigration Emigration Cell on the left Cell on the right Only survivors of harvest will move Movement rate the same in all cells Harvest, then movement
22
15 spatial models animation.r
23
Diffusion scenario 21 areas, 50 time steps, migration rate m = 0.2, r = 0.2, K = 1000, reflective boundary Diffusion scenario: starting population = K in center cell, 0 in all other cells, exploitation rate 0 15 spatial models animation.r
24
Diffusion, no harvesting, N11 = K (darker = older years, light gray = most recent)
Abundance ####FISH 458 lecture on spatial models #Written by Trevor A. Branch starting 6 May 2012 #Completed 7 May 2012 ####################################################### ###Model 1: one-D spatial model logistic growth with harvesting ###assume reflection when hits boundary one.d.logistic <- function(ncells=101, expl.rate=rep(0,ncells), ntime.steps=20, K=1000, r=0.2, m.rate=0.1, start.N.vec=c(rep(0,50),K,rep(0,50))) { N.mat <- matrix(nrow=ntime.steps,ncol=ncells) N.mat[1,] <- start.N.vec for (year in 1:(ntime.steps-1)) { #modelled as reflection, so no movement when hit bounds #left-most cell N.mat[year+1,1] <- N.mat[year,1] + r*N.mat[year,1]*(1-N.mat[year,1]/K) - expl.rate[1]*N.mat[year,1] + m.rate*((1-expl.rate[1+1])*N.mat[year,1+1]) - m.rate*((1-expl.rate[1])*N.mat[year,1]) #right-most cell N.mat[year+1,ncells] <- N.mat[year,ncells] + r*N.mat[year,ncells]*(1-N.mat[year,ncells]/K) - expl.rate[ncells]*N.mat[year,ncells] + m.rate*((1-expl.rate[ncells-1])*N.mat[year,ncells-1]) - m.rate*((1-expl.rate[ncells])*N.mat[year,ncells]) #all the cells in between for (i in 2:(ncells-1)) { N.mat[year+1,i] <- N.mat[year,i] + r*N.mat[year,i]*(1-N.mat[year,i]/K) - expl.rate[i]*N.mat[year,i] + m.rate*((1-expl.rate[i-1])*N.mat[year,i-1]+(1-expl.rate[i+1])*N.mat[year,i+1]) - 2*m.rate*((1-expl.rate[i])*N.mat[year,i]) #print(N.mat[year+1,i]) } #plot results gray.pal <- (1:ntime.steps)/ntime.steps* #returns values between 0.2 (light gray) and 1 (black) #print(gray.pal) plot(x=1:ncells,y=N.mat[1,], type="l",xaxs="i",yaxs="i",las=1, col=gray(gray.pal[1]), ylim=c(0,K*1.02), xlab="", ylab="") for (year in 2:ntime.steps) { par(new=T) lines(x=1:ncells,y=N.mat[year,], col=gray(gray.pal[year]), ylim=c(0,K*1.02)) return(N.mat) K.start <- 1000 ncells <- 21 par(oma=c(0,0,0,0), mar=c(5,5,1,1)) x <- one.d.logistic(ncells=ncells, expl.rate=rep(0,ncells), ntime.steps=10, K=K.start, r=0.2, m.rate=0.1, start.N.vec=c(rep(0,9),K.start/100,K.start,K.start/100,rep(0,9))) ###Set up animation; all in middle cell, no harvest #requires installation of ImageMagick, followed by machine restart require(animation) outdir <- "C:\\Users\\Trevor Branch\\Documents\\FISH458 in 2012\\aLectures\\Rpics" oopts = ani.options(interval = 0.03, ani.dev="png", outdir = outdir, width=1400, height=600) #interval is wait in seconds between frames in video par(bg = "white") #ensure the background color is white ani.record(reset = TRUE) #clear history before recording for (year in 2:50) { x <- one.d.logistic(ncells=ncells, expl.rate=rep(0,ncells), ntime.steps=year, K=K.start, r=0.2, m.rate=0.1, ani.record() #record the current frame saveGIF(ani.replay(), img.name = "oneDmovie", movie.name="oneDmovie.gif", convert="convert", ani.width=1400, ani.height=600, interval = 0.2) #ImageMagick #####all at K, add harvest but MPA in middle cells #oopts = ani.options(interval = 0.03, ani.dev="png", outdir = outdir, width=1400, height=600) #interval is wait in seconds between frames in video x <- one.d.logistic(ncells=ncells, expl.rate=c(rep(0.2,8),0,0,0,0,0,rep(0.2,8)), ntime.steps=year, K=K.start, r=0.2, m.rate=0.1, start.N.vec=rep(K.start,ncells)) saveGIF(ani.replay(), img.name = "MPA", movie.name="MPA.gif", convert="convert", interval=0.2, ani.width=1400, ani.height=600) #ImageMagick ###for(i in 1:100) {dev.off()} Cell number 15 spatial models animation.r
25
Marine protected area scenario
21 areas, 50 time steps, migration rate m = 0.2, r = 0.2, K = 1000, reflective boundary MPA scenario: starting population = K in all cells, exploitation rate 0 in center 5 cells (numbers 9–13), exploitation rate 0.2 in all other cells 15 spatial models animation.r
26
MPA: no harvest in center cells (darker = older years, light gray = most recent)
Abundance ####FISH 458 lecture on spatial models #Written by Trevor A. Branch starting 6 May 2012 #Completed 7 May 2012 ####################################################### ###Model 1: one-D spatial model logistic growth with harvesting ###assume reflection when hits boundary one.d.logistic <- function(ncells=101, expl.rate=rep(0,ncells), ntime.steps=20, K=1000, r=0.2, m.rate=0.1, start.N.vec=c(rep(0,50),K,rep(0,50))) { N.mat <- matrix(nrow=ntime.steps,ncol=ncells) N.mat[1,] <- start.N.vec for (year in 1:(ntime.steps-1)) { #modelled as reflection, so no movement when hit bounds #left-most cell N.mat[year+1,1] <- N.mat[year,1] + r*N.mat[year,1]*(1-N.mat[year,1]/K) - expl.rate[1]*N.mat[year,1] + m.rate*((1-expl.rate[1+1])*N.mat[year,1+1]) - m.rate*((1-expl.rate[1])*N.mat[year,1]) #right-most cell N.mat[year+1,ncells] <- N.mat[year,ncells] + r*N.mat[year,ncells]*(1-N.mat[year,ncells]/K) - expl.rate[ncells]*N.mat[year,ncells] + m.rate*((1-expl.rate[ncells-1])*N.mat[year,ncells-1]) - m.rate*((1-expl.rate[ncells])*N.mat[year,ncells]) #all the cells in between for (i in 2:(ncells-1)) { N.mat[year+1,i] <- N.mat[year,i] + r*N.mat[year,i]*(1-N.mat[year,i]/K) - expl.rate[i]*N.mat[year,i] + m.rate*((1-expl.rate[i-1])*N.mat[year,i-1]+(1-expl.rate[i+1])*N.mat[year,i+1]) - 2*m.rate*((1-expl.rate[i])*N.mat[year,i]) #print(N.mat[year+1,i]) } #plot results gray.pal <- (1:ntime.steps)/ntime.steps* #returns values between 0.2 (light gray) and 1 (black) #print(gray.pal) plot(x=1:ncells,y=N.mat[1,], type="l",xaxs="i",yaxs="i",las=1, col=gray(gray.pal[1]), ylim=c(0,K*1.02), xlab="", ylab="") for (year in 2:ntime.steps) { par(new=T) lines(x=1:ncells,y=N.mat[year,], col=gray(gray.pal[year]), ylim=c(0,K*1.02)) return(N.mat) K.start <- 1000 ncells <- 21 par(oma=c(0,0,0,0), mar=c(5,5,1,1)) x <- one.d.logistic(ncells=ncells, expl.rate=rep(0,ncells), ntime.steps=10, K=K.start, r=0.2, m.rate=0.1, start.N.vec=c(rep(0,9),K.start/100,K.start,K.start/100,rep(0,9))) ###Set up animation; all in middle cell, no harvest #requires installation of ImageMagick, followed by machine restart require(animation) outdir <- "C:\\Users\\Trevor Branch\\Documents\\FISH458 in 2012\\aLectures\\Rpics" oopts = ani.options(interval = 0.03, ani.dev="png", outdir = outdir, width=1400, height=600) #interval is wait in seconds between frames in video par(bg = "white") #ensure the background color is white ani.record(reset = TRUE) #clear history before recording for (year in 2:50) { x <- one.d.logistic(ncells=ncells, expl.rate=rep(0,ncells), ntime.steps=year, K=K.start, r=0.2, m.rate=0.1, ani.record() #record the current frame saveGIF(ani.replay(), img.name = "oneDmovie", movie.name="oneDmovie.gif", convert="convert", ani.width=1400, ani.height=600, interval = 0.2) #ImageMagick #####all at K, add harvest but MPA in middle cells #oopts = ani.options(interval = 0.03, ani.dev="png", outdir = outdir, width=1400, height=600) #interval is wait in seconds between frames in video x <- one.d.logistic(ncells=ncells, expl.rate=c(rep(0.2,8),0,0,0,0,0,rep(0.2,8)), ntime.steps=year, K=K.start, r=0.2, m.rate=0.1, start.N.vec=rep(K.start,ncells)) saveGIF(ani.replay(), img.name = "MPA", movie.name="MPA.gif", convert="convert", interval=0.2, ani.width=1400, ani.height=600) #ImageMagick ###for(i in 1:100) {dev.off()} Cell number 15 spatial models animation.r
27
Do protected areas increase yields?
51 areas, migration rate m = 0.2, r = 0.2, K = 1000, start population = K in all areas Run with u = 0, 0.01, 0.02, …, 0.9 After a large number of time steps (1000) the model is at equilibrium, and total yield in the final time step is the equilibrium yield for each value of u No MPA: all areas have harvest rate = u MPA: 5 middle areas have zero harvest rate, other have harvest rate = u 15 MPA yield.r
28
15 MPA yield.r
29
Almost at equilibrium yield
Time series of catches Initially the no MPA scenario has higher catches; after year 14 with high u = 0.25 the MPA has higher catches; with no MPA, the population can go extinct Almost at equilibrium yield Yield in each year No MPA u = 0.1 MPA u = 0.25 Year 15 MPA yield.r
30
Equilibrium yield Examine the equilibrium yield after running the model for 100 years How does this differ with an MPA and without an MPA? How does this differ for different harvest rates?
31
Do protected areas increase yield?
Higher yield without MPA Yield maximized at higher harvest rate with MPA At u > r, MPA prevents collapse (insurance policy) No MPA u = r = 0.2 Equilibrium yield ####FISH 458 lecture on spatial models #Written by Trevor A. Branch starting 6 May 2012 #Completed 7 May 2012 ####################################################### ###Model 1: one-D spatial model logistic growth with harvesting ###assume reflection when hits boundary ###Test to see what total yield is at different harvest rates, and with different numbers of cells closed one.d.logistic <- function(ncells=101, expl.rate=rep(0,ncells), ntime.steps=20, K=1000, r=0.2, m.rate=0.1, start.N.vec=c(rep(0,50),K,rep(0,50))) { N.mat <- matrix(nrow=ntime.steps,ncol=ncells) N.mat[1,] <- start.N.vec yield <- vector(length=ntime.steps) yield[] <- 0 for (year in 1:(ntime.steps-1)) { yield[year] <- 0 for (i in 1:ncells) { yield[year] <- yield[year]+expl.rate[i]*N.mat[year,i] } #modelled as reflection, so no movement when hit bounds #left-most cell N.mat[year+1,1] <- N.mat[year,1] + r*N.mat[year,1]*(1-N.mat[year,1]/K) - expl.rate[1]*N.mat[year,1] + m.rate*((1-expl.rate[1+1])*N.mat[year,1+1]) - m.rate*((1-expl.rate[1])*N.mat[year,1]) #right-most cell N.mat[year+1,ncells] <- N.mat[year,ncells] + r*N.mat[year,ncells]*(1-N.mat[year,ncells]/K) - expl.rate[ncells]*N.mat[year,ncells] + m.rate*((1-expl.rate[ncells-1])*N.mat[year,ncells-1]) - m.rate*((1-expl.rate[ncells])*N.mat[year,ncells]) #all the cells in between for (i in 2:(ncells-1)) { N.mat[year+1,i] <- N.mat[year,i] + r*N.mat[year,i]*(1-N.mat[year,i]/K) - expl.rate[i]*N.mat[year,i] + m.rate*((1-expl.rate[i-1])*N.mat[year,i-1]+(1-expl.rate[i+1])*N.mat[year,i+1]) - 2*m.rate*((1-expl.rate[i])*N.mat[year,i]) #print(N.mat[year+1,i]) #now calculate final year yield yield[ntime.steps] <- yield[ntime.steps]+expl.rate[i]*N.mat[ntime.steps,i] return(list(N.mat=N.mat, yield=yield)) ###compare yield by harvest rates for 5 closed cells out of 51 K.start <- 1000 ncells <- 51 ntime.steps <- 1000 urate <- seq(0,0.2,0.01) nharvest <- length(urate) final.yield <- vector(length=nharvest) for (i in 1:nharvest) { x <- one.d.logistic(ncells=ncells, expl.rate=c(rep(urate[i],(ncells-1)/2-2),0,0,0,0,0,rep(urate[i],(ncells-1)/2-2)), ntime.steps=ntime.steps, K=K.start, r=0.2, m.rate=0.2, start.N.vec=rep(K.start,ncells)) final.yield[i] <- x$yield[ntime.steps] final.yield.noMPA <- vector(length=nharvest) xnoMPA <- one.d.logistic(ncells=ncells, expl.rate=rep(urate[i],ncells), ntime.steps=ntime.steps, final.yield.noMPA[i] <- xnoMPA$yield[ntime.steps] plot(x=urate,y=final.yield, xaxs="i",yaxs="i",type="l",lwd=2,col="blue",las=1, xlab="Harvest rate", ylab="Equilibrium yield", ylim=c(0,2600),cex.lab=1.3) par(new=T) plot(x=urate,y=final.yield.noMPA, xaxs="i",yaxs="i",type="l",lwd=2,col="green",las=1, xlab="", ylab="",ylim=c(0,2600),axes=F) ###compare yield by harvest rates for 25 closed cells out of 51 urate <- seq(0,0.9,0.01) expl.rate=c(rep(urate[i],13),rep(0,25),rep(urate[i],13)), ntime.steps=ntime.steps, ###Three scenarios that produce identical yield of around 1377 tons ###1. closed 25 areas, at u = 0.1 ###2. all areas open at u = 0.032 ###3. all areas open at u = 0.168 urate <- 0.1 expl.rate=c(rep(urate,13),rep(0,25),rep(urate,13)), ntime.steps=ntime.steps, print(x$yield[ntime.steps]) urate<-0.032 xnoMPA1 <- one.d.logistic(ncells=ncells, expl.rate=rep(urate,ncells), ntime.steps=ntime.steps, print(xnoMPA1$yield[ntime.steps]) urate<-0.168 xnoMPA2 <- one.d.logistic(ncells=ncells, print(xnoMPA2$yield[ntime.steps]) plot(x=1:ncells,y=x$N.mat[ntime.steps,], ylim=c(0,1050), xlab="Cell number",cex.lab=1.3,ylab="Abundance",type="l",lwd=2,col="blue", las=1,xaxs="i",yaxs="i") plot(x=1:ncells,y=xnoMPA1$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) plot(x=1:ncells,y=xnoMPA2$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) polygon(x=c(14,14,38,38),y=c(0,1050,1050,0),col="# ") uMSY = r/2 = 0.1 MPA Harvest rate (u) 15 MPA yield.r
32
Zoomed in No MPA MPA Equilibrium yield Harvest rate (u)
####FISH 458 lecture on spatial models #Written by Trevor A. Branch starting 6 May 2012 #Completed 7 May 2012 ####################################################### ###Model 1: one-D spatial model logistic growth with harvesting ###assume reflection when hits boundary ###Test to see what total yield is at different harvest rates, and with different numbers of cells closed one.d.logistic <- function(ncells=101, expl.rate=rep(0,ncells), ntime.steps=20, K=1000, r=0.2, m.rate=0.1, start.N.vec=c(rep(0,50),K,rep(0,50))) { N.mat <- matrix(nrow=ntime.steps,ncol=ncells) N.mat[1,] <- start.N.vec yield <- vector(length=ntime.steps) yield[] <- 0 for (year in 1:(ntime.steps-1)) { yield[year] <- 0 for (i in 1:ncells) { yield[year] <- yield[year]+expl.rate[i]*N.mat[year,i] } #modelled as reflection, so no movement when hit bounds #left-most cell N.mat[year+1,1] <- N.mat[year,1] + r*N.mat[year,1]*(1-N.mat[year,1]/K) - expl.rate[1]*N.mat[year,1] + m.rate*((1-expl.rate[1+1])*N.mat[year,1+1]) - m.rate*((1-expl.rate[1])*N.mat[year,1]) #right-most cell N.mat[year+1,ncells] <- N.mat[year,ncells] + r*N.mat[year,ncells]*(1-N.mat[year,ncells]/K) - expl.rate[ncells]*N.mat[year,ncells] + m.rate*((1-expl.rate[ncells-1])*N.mat[year,ncells-1]) - m.rate*((1-expl.rate[ncells])*N.mat[year,ncells]) #all the cells in between for (i in 2:(ncells-1)) { N.mat[year+1,i] <- N.mat[year,i] + r*N.mat[year,i]*(1-N.mat[year,i]/K) - expl.rate[i]*N.mat[year,i] + m.rate*((1-expl.rate[i-1])*N.mat[year,i-1]+(1-expl.rate[i+1])*N.mat[year,i+1]) - 2*m.rate*((1-expl.rate[i])*N.mat[year,i]) #print(N.mat[year+1,i]) #now calculate final year yield yield[ntime.steps] <- yield[ntime.steps]+expl.rate[i]*N.mat[ntime.steps,i] return(list(N.mat=N.mat, yield=yield)) ###compare yield by harvest rates for 5 closed cells out of 51 K.start <- 1000 ncells <- 51 ntime.steps <- 1000 urate <- seq(0,0.2,0.01) nharvest <- length(urate) final.yield <- vector(length=nharvest) for (i in 1:nharvest) { x <- one.d.logistic(ncells=ncells, expl.rate=c(rep(urate[i],(ncells-1)/2-2),0,0,0,0,0,rep(urate[i],(ncells-1)/2-2)), ntime.steps=ntime.steps, K=K.start, r=0.2, m.rate=0.2, start.N.vec=rep(K.start,ncells)) final.yield[i] <- x$yield[ntime.steps] final.yield.noMPA <- vector(length=nharvest) xnoMPA <- one.d.logistic(ncells=ncells, expl.rate=rep(urate[i],ncells), ntime.steps=ntime.steps, final.yield.noMPA[i] <- xnoMPA$yield[ntime.steps] plot(x=urate,y=final.yield, xaxs="i",yaxs="i",type="l",lwd=2,col="blue",las=1, xlab="Harvest rate", ylab="Equilibrium yield", ylim=c(0,2600),cex.lab=1.3) par(new=T) plot(x=urate,y=final.yield.noMPA, xaxs="i",yaxs="i",type="l",lwd=2,col="green",las=1, xlab="", ylab="",ylim=c(0,2600),axes=F) ###compare yield by harvest rates for 25 closed cells out of 51 urate <- seq(0,0.9,0.01) expl.rate=c(rep(urate[i],13),rep(0,25),rep(urate[i],13)), ntime.steps=ntime.steps, ###Three scenarios that produce identical yield of around 1377 tons ###1. closed 25 areas, at u = 0.1 ###2. all areas open at u = 0.032 ###3. all areas open at u = 0.168 urate <- 0.1 expl.rate=c(rep(urate,13),rep(0,25),rep(urate,13)), ntime.steps=ntime.steps, print(x$yield[ntime.steps]) urate<-0.032 xnoMPA1 <- one.d.logistic(ncells=ncells, expl.rate=rep(urate,ncells), ntime.steps=ntime.steps, print(xnoMPA1$yield[ntime.steps]) urate<-0.168 xnoMPA2 <- one.d.logistic(ncells=ncells, print(xnoMPA2$yield[ntime.steps]) plot(x=1:ncells,y=x$N.mat[ntime.steps,], ylim=c(0,1050), xlab="Cell number",cex.lab=1.3,ylab="Abundance",type="l",lwd=2,col="blue", las=1,xaxs="i",yaxs="i") plot(x=1:ncells,y=xnoMPA1$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) plot(x=1:ncells,y=xnoMPA2$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) polygon(x=c(14,14,38,38),y=c(0,1050,1050,0),col="# ") uMSY without MPA Break-even point uMSY with MPA Harvest rate (u) 15 MPA yield.r
33
Bigger MPA (25 cells) (previously 5 cells)
Closing more areas reduces the maximum yield more Maximum yield reduced from to 1377 in this simulation No MPA Equilibrium yield MPA ####FISH 458 lecture on spatial models #Written by Trevor A. Branch starting 6 May 2012 #Completed 7 May 2012 ####################################################### ###Model 1: one-D spatial model logistic growth with harvesting ###assume reflection when hits boundary ###Test to see what total yield is at different harvest rates, and with different numbers of cells closed one.d.logistic <- function(ncells=101, expl.rate=rep(0,ncells), ntime.steps=20, K=1000, r=0.2, m.rate=0.1, start.N.vec=c(rep(0,50),K,rep(0,50))) { N.mat <- matrix(nrow=ntime.steps,ncol=ncells) N.mat[1,] <- start.N.vec yield <- vector(length=ntime.steps) yield[] <- 0 for (year in 1:(ntime.steps-1)) { yield[year] <- 0 for (i in 1:ncells) { yield[year] <- yield[year]+expl.rate[i]*N.mat[year,i] } #modelled as reflection, so no movement when hit bounds #left-most cell N.mat[year+1,1] <- N.mat[year,1] + r*N.mat[year,1]*(1-N.mat[year,1]/K) - expl.rate[1]*N.mat[year,1] + m.rate*((1-expl.rate[1+1])*N.mat[year,1+1]) - m.rate*((1-expl.rate[1])*N.mat[year,1]) #right-most cell N.mat[year+1,ncells] <- N.mat[year,ncells] + r*N.mat[year,ncells]*(1-N.mat[year,ncells]/K) - expl.rate[ncells]*N.mat[year,ncells] + m.rate*((1-expl.rate[ncells-1])*N.mat[year,ncells-1]) - m.rate*((1-expl.rate[ncells])*N.mat[year,ncells]) #all the cells in between for (i in 2:(ncells-1)) { N.mat[year+1,i] <- N.mat[year,i] + r*N.mat[year,i]*(1-N.mat[year,i]/K) - expl.rate[i]*N.mat[year,i] + m.rate*((1-expl.rate[i-1])*N.mat[year,i-1]+(1-expl.rate[i+1])*N.mat[year,i+1]) - 2*m.rate*((1-expl.rate[i])*N.mat[year,i]) #print(N.mat[year+1,i]) #now calculate final year yield yield[ntime.steps] <- yield[ntime.steps]+expl.rate[i]*N.mat[ntime.steps,i] return(list(N.mat=N.mat, yield=yield)) ###compare yield by harvest rates for 5 closed cells out of 51 K.start <- 1000 ncells <- 51 ntime.steps <- 1000 urate <- seq(0,0.2,0.01) nharvest <- length(urate) final.yield <- vector(length=nharvest) for (i in 1:nharvest) { x <- one.d.logistic(ncells=ncells, expl.rate=c(rep(urate[i],(ncells-1)/2-2),0,0,0,0,0,rep(urate[i],(ncells-1)/2-2)), ntime.steps=ntime.steps, K=K.start, r=0.2, m.rate=0.2, start.N.vec=rep(K.start,ncells)) final.yield[i] <- x$yield[ntime.steps] final.yield.noMPA <- vector(length=nharvest) xnoMPA <- one.d.logistic(ncells=ncells, expl.rate=rep(urate[i],ncells), ntime.steps=ntime.steps, final.yield.noMPA[i] <- xnoMPA$yield[ntime.steps] plot(x=urate,y=final.yield, xaxs="i",yaxs="i",type="l",lwd=2,col="blue",las=1, xlab="Harvest rate", ylab="Equilibrium yield", ylim=c(0,2600),cex.lab=1.3) par(new=T) plot(x=urate,y=final.yield.noMPA, xaxs="i",yaxs="i",type="l",lwd=2,col="green",las=1, xlab="", ylab="",ylim=c(0,2600),axes=F) ###compare yield by harvest rates for 25 closed cells out of 51 urate <- seq(0,0.9,0.01) expl.rate=c(rep(urate[i],13),rep(0,25),rep(urate[i],13)), ntime.steps=ntime.steps, ###Three scenarios that produce identical yield of around 1377 tons ###1. closed 25 areas, at u = 0.1 ###2. all areas open at u = 0.032 ###3. all areas open at u = 0.168 urate <- 0.1 expl.rate=c(rep(urate,13),rep(0,25),rep(urate,13)), ntime.steps=ntime.steps, print(x$yield[ntime.steps]) urate<-0.032 xnoMPA1 <- one.d.logistic(ncells=ncells, expl.rate=rep(urate,ncells), ntime.steps=ntime.steps, print(xnoMPA1$yield[ntime.steps]) urate<-0.168 xnoMPA2 <- one.d.logistic(ncells=ncells, print(xnoMPA2$yield[ntime.steps]) plot(x=1:ncells,y=x$N.mat[ntime.steps,], ylim=c(0,1050), xlab="Cell number",cex.lab=1.3,ylab="Abundance",type="l",lwd=2,col="blue", las=1,xaxs="i",yaxs="i") plot(x=1:ncells,y=xnoMPA1$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) plot(x=1:ncells,y=xnoMPA2$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) polygon(x=c(14,14,38,38),y=c(0,1050,1050,0),col="# ") Harvest rate (u) 15 MPA yield.r
34
Lessons Spatial scale and pattern matters Simple movement models
Marine protected areas: insurance vs. yield Trade-offs between catch, profit, and biodiversity
35
For the same yield what is u?
MPA: u = produces MSY No MPA: two values of u result in equivalent yield: u = and u = 0.168 No MPA Equilibrium yield MPA ####FISH 458 lecture on spatial models #Written by Trevor A. Branch starting 6 May 2012 #Completed 7 May 2012 ####################################################### ###Model 1: one-D spatial model logistic growth with harvesting ###assume reflection when hits boundary ###Test to see what total yield is at different harvest rates, and with different numbers of cells closed one.d.logistic <- function(ncells=101, expl.rate=rep(0,ncells), ntime.steps=20, K=1000, r=0.2, m.rate=0.1, start.N.vec=c(rep(0,50),K,rep(0,50))) { N.mat <- matrix(nrow=ntime.steps,ncol=ncells) N.mat[1,] <- start.N.vec yield <- vector(length=ntime.steps) yield[] <- 0 for (year in 1:(ntime.steps-1)) { yield[year] <- 0 for (i in 1:ncells) { yield[year] <- yield[year]+expl.rate[i]*N.mat[year,i] } #modelled as reflection, so no movement when hit bounds #left-most cell N.mat[year+1,1] <- N.mat[year,1] + r*N.mat[year,1]*(1-N.mat[year,1]/K) - expl.rate[1]*N.mat[year,1] + m.rate*((1-expl.rate[1+1])*N.mat[year,1+1]) - m.rate*((1-expl.rate[1])*N.mat[year,1]) #right-most cell N.mat[year+1,ncells] <- N.mat[year,ncells] + r*N.mat[year,ncells]*(1-N.mat[year,ncells]/K) - expl.rate[ncells]*N.mat[year,ncells] + m.rate*((1-expl.rate[ncells-1])*N.mat[year,ncells-1]) - m.rate*((1-expl.rate[ncells])*N.mat[year,ncells]) #all the cells in between for (i in 2:(ncells-1)) { N.mat[year+1,i] <- N.mat[year,i] + r*N.mat[year,i]*(1-N.mat[year,i]/K) - expl.rate[i]*N.mat[year,i] + m.rate*((1-expl.rate[i-1])*N.mat[year,i-1]+(1-expl.rate[i+1])*N.mat[year,i+1]) - 2*m.rate*((1-expl.rate[i])*N.mat[year,i]) #print(N.mat[year+1,i]) #now calculate final year yield yield[ntime.steps] <- yield[ntime.steps]+expl.rate[i]*N.mat[ntime.steps,i] return(list(N.mat=N.mat, yield=yield)) ###compare yield by harvest rates for 5 closed cells out of 51 K.start <- 1000 ncells <- 51 ntime.steps <- 1000 urate <- seq(0,0.2,0.01) nharvest <- length(urate) final.yield <- vector(length=nharvest) for (i in 1:nharvest) { x <- one.d.logistic(ncells=ncells, expl.rate=c(rep(urate[i],(ncells-1)/2-2),0,0,0,0,0,rep(urate[i],(ncells-1)/2-2)), ntime.steps=ntime.steps, K=K.start, r=0.2, m.rate=0.2, start.N.vec=rep(K.start,ncells)) final.yield[i] <- x$yield[ntime.steps] final.yield.noMPA <- vector(length=nharvest) xnoMPA <- one.d.logistic(ncells=ncells, expl.rate=rep(urate[i],ncells), ntime.steps=ntime.steps, final.yield.noMPA[i] <- xnoMPA$yield[ntime.steps] plot(x=urate,y=final.yield, xaxs="i",yaxs="i",type="l",lwd=2,col="blue",las=1, xlab="Harvest rate", ylab="Equilibrium yield", ylim=c(0,2600),cex.lab=1.3) par(new=T) plot(x=urate,y=final.yield.noMPA, xaxs="i",yaxs="i",type="l",lwd=2,col="green",las=1, xlab="", ylab="",ylim=c(0,2600),axes=F) ###compare yield by harvest rates for 25 closed cells out of 51 urate <- seq(0,0.9,0.01) expl.rate=c(rep(urate[i],13),rep(0,25),rep(urate[i],13)), ntime.steps=ntime.steps, ###Three scenarios that produce identical yield of around 1377 tons ###1. closed 25 areas, at u = 0.1 ###2. all areas open at u = 0.032 ###3. all areas open at u = 0.168 urate <- 0.1 expl.rate=c(rep(urate,13),rep(0,25),rep(urate,13)), ntime.steps=ntime.steps, print(x$yield[ntime.steps]) urate<-0.032 xnoMPA1 <- one.d.logistic(ncells=ncells, expl.rate=rep(urate,ncells), ntime.steps=ntime.steps, print(xnoMPA1$yield[ntime.steps]) urate<-0.168 xnoMPA2 <- one.d.logistic(ncells=ncells, print(xnoMPA2$yield[ntime.steps]) plot(x=1:ncells,y=x$N.mat[ntime.steps,], ylim=c(0,1050), xlab="Cell number",cex.lab=1.3,ylab="Abundance",type="l",lwd=2,col="blue", las=1,xaxs="i",yaxs="i") plot(x=1:ncells,y=xnoMPA1$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) plot(x=1:ncells,y=xnoMPA2$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) polygon(x=c(14,14,38,38),y=c(0,1050,1050,0),col="# ") Harvest rate (u) 15 MPA yield.r
36
For the same yield, what is biomass?
No MPA u = 0.032 MPA u = 0.1 Abundance ####FISH 458 lecture on spatial models #Written by Trevor A. Branch starting 6 May 2012 #Completed 7 May 2012 ####################################################### ###Model 1: one-D spatial model logistic growth with harvesting ###assume reflection when hits boundary ###Test to see what total yield is at different harvest rates, and with different numbers of cells closed one.d.logistic <- function(ncells=101, expl.rate=rep(0,ncells), ntime.steps=20, K=1000, r=0.2, m.rate=0.1, start.N.vec=c(rep(0,50),K,rep(0,50))) { N.mat <- matrix(nrow=ntime.steps,ncol=ncells) N.mat[1,] <- start.N.vec yield <- vector(length=ntime.steps) yield[] <- 0 for (year in 1:(ntime.steps-1)) { yield[year] <- 0 for (i in 1:ncells) { yield[year] <- yield[year]+expl.rate[i]*N.mat[year,i] } #modelled as reflection, so no movement when hit bounds #left-most cell N.mat[year+1,1] <- N.mat[year,1] + r*N.mat[year,1]*(1-N.mat[year,1]/K) - expl.rate[1]*N.mat[year,1] + m.rate*((1-expl.rate[1+1])*N.mat[year,1+1]) - m.rate*((1-expl.rate[1])*N.mat[year,1]) #right-most cell N.mat[year+1,ncells] <- N.mat[year,ncells] + r*N.mat[year,ncells]*(1-N.mat[year,ncells]/K) - expl.rate[ncells]*N.mat[year,ncells] + m.rate*((1-expl.rate[ncells-1])*N.mat[year,ncells-1]) - m.rate*((1-expl.rate[ncells])*N.mat[year,ncells]) #all the cells in between for (i in 2:(ncells-1)) { N.mat[year+1,i] <- N.mat[year,i] + r*N.mat[year,i]*(1-N.mat[year,i]/K) - expl.rate[i]*N.mat[year,i] + m.rate*((1-expl.rate[i-1])*N.mat[year,i-1]+(1-expl.rate[i+1])*N.mat[year,i+1]) - 2*m.rate*((1-expl.rate[i])*N.mat[year,i]) #print(N.mat[year+1,i]) #now calculate final year yield yield[ntime.steps] <- yield[ntime.steps]+expl.rate[i]*N.mat[ntime.steps,i] return(list(N.mat=N.mat, yield=yield)) ###compare yield by harvest rates for 5 closed cells out of 51 K.start <- 1000 ncells <- 51 ntime.steps <- 1000 urate <- seq(0,0.2,0.01) nharvest <- length(urate) final.yield <- vector(length=nharvest) for (i in 1:nharvest) { x <- one.d.logistic(ncells=ncells, expl.rate=c(rep(urate[i],(ncells-1)/2-2),0,0,0,0,0,rep(urate[i],(ncells-1)/2-2)), ntime.steps=ntime.steps, K=K.start, r=0.2, m.rate=0.2, start.N.vec=rep(K.start,ncells)) final.yield[i] <- x$yield[ntime.steps] final.yield.noMPA <- vector(length=nharvest) xnoMPA <- one.d.logistic(ncells=ncells, expl.rate=rep(urate[i],ncells), ntime.steps=ntime.steps, final.yield.noMPA[i] <- xnoMPA$yield[ntime.steps] plot(x=urate,y=final.yield, xaxs="i",yaxs="i",type="l",lwd=2,col="blue",las=1, xlab="Harvest rate", ylab="Equilibrium yield", ylim=c(0,2600),cex.lab=1.3) par(new=T) plot(x=urate,y=final.yield.noMPA, xaxs="i",yaxs="i",type="l",lwd=2,col="green",las=1, xlab="", ylab="",ylim=c(0,2600),axes=F) ###compare yield by harvest rates for 25 closed cells out of 51 urate <- seq(0,0.9,0.01) expl.rate=c(rep(urate[i],13),rep(0,25),rep(urate[i],13)), ntime.steps=ntime.steps, ###Three scenarios that produce identical yield of around 1377 tons ###1. closed 25 areas, at u = 0.1 ###2. all areas open at u = 0.032 ###3. all areas open at u = 0.168 urate <- 0.1 expl.rate=c(rep(urate,13),rep(0,25),rep(urate,13)), ntime.steps=ntime.steps, print(x$yield[ntime.steps]) urate<-0.032 xnoMPA1 <- one.d.logistic(ncells=ncells, expl.rate=rep(urate,ncells), ntime.steps=ntime.steps, print(xnoMPA1$yield[ntime.steps]) urate<-0.168 xnoMPA2 <- one.d.logistic(ncells=ncells, print(xnoMPA2$yield[ntime.steps]) plot(x=1:ncells,y=x$N.mat[ntime.steps,], ylim=c(0,1050), xlab="Cell number",cex.lab=1.3,ylab="Abundance",type="l",lwd=2,col="blue", las=1,xaxs="i",yaxs="i") plot(x=1:ncells,y=xnoMPA1$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) plot(x=1:ncells,y=xnoMPA2$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) polygon(x=c(14,14,38,38),y=c(0,1050,1050,0),col="# ") No MPA u = 0.168 Cell number 15 MPA yield.r
37
For the same yield, what is CPUE
For the same yield, what is CPUE? (assume effort is proportional to harvest rate u) No MPA u = 0.032, yield = 1370, CPUE = 1370/0.032 = 42800 MPA u = 0.1, yield = 1370, CPUE = 13700 No MPA u = 0.168, yield = 1370, CPUE = 8200 ####FISH 458 lecture on spatial models #Written by Trevor A. Branch starting 6 May 2012 #Completed 7 May 2012 ####################################################### ###Model 1: one-D spatial model logistic growth with harvesting ###assume reflection when hits boundary ###Test to see what total yield is at different harvest rates, and with different numbers of cells closed one.d.logistic <- function(ncells=101, expl.rate=rep(0,ncells), ntime.steps=20, K=1000, r=0.2, m.rate=0.1, start.N.vec=c(rep(0,50),K,rep(0,50))) { N.mat <- matrix(nrow=ntime.steps,ncol=ncells) N.mat[1,] <- start.N.vec yield <- vector(length=ntime.steps) yield[] <- 0 for (year in 1:(ntime.steps-1)) { yield[year] <- 0 for (i in 1:ncells) { yield[year] <- yield[year]+expl.rate[i]*N.mat[year,i] } #modelled as reflection, so no movement when hit bounds #left-most cell N.mat[year+1,1] <- N.mat[year,1] + r*N.mat[year,1]*(1-N.mat[year,1]/K) - expl.rate[1]*N.mat[year,1] + m.rate*((1-expl.rate[1+1])*N.mat[year,1+1]) - m.rate*((1-expl.rate[1])*N.mat[year,1]) #right-most cell N.mat[year+1,ncells] <- N.mat[year,ncells] + r*N.mat[year,ncells]*(1-N.mat[year,ncells]/K) - expl.rate[ncells]*N.mat[year,ncells] + m.rate*((1-expl.rate[ncells-1])*N.mat[year,ncells-1]) - m.rate*((1-expl.rate[ncells])*N.mat[year,ncells]) #all the cells in between for (i in 2:(ncells-1)) { N.mat[year+1,i] <- N.mat[year,i] + r*N.mat[year,i]*(1-N.mat[year,i]/K) - expl.rate[i]*N.mat[year,i] + m.rate*((1-expl.rate[i-1])*N.mat[year,i-1]+(1-expl.rate[i+1])*N.mat[year,i+1]) - 2*m.rate*((1-expl.rate[i])*N.mat[year,i]) #print(N.mat[year+1,i]) #now calculate final year yield yield[ntime.steps] <- yield[ntime.steps]+expl.rate[i]*N.mat[ntime.steps,i] return(list(N.mat=N.mat, yield=yield)) ###compare yield by harvest rates for 5 closed cells out of 51 K.start <- 1000 ncells <- 51 ntime.steps <- 1000 urate <- seq(0,0.2,0.01) nharvest <- length(urate) final.yield <- vector(length=nharvest) for (i in 1:nharvest) { x <- one.d.logistic(ncells=ncells, expl.rate=c(rep(urate[i],(ncells-1)/2-2),0,0,0,0,0,rep(urate[i],(ncells-1)/2-2)), ntime.steps=ntime.steps, K=K.start, r=0.2, m.rate=0.2, start.N.vec=rep(K.start,ncells)) final.yield[i] <- x$yield[ntime.steps] final.yield.noMPA <- vector(length=nharvest) xnoMPA <- one.d.logistic(ncells=ncells, expl.rate=rep(urate[i],ncells), ntime.steps=ntime.steps, final.yield.noMPA[i] <- xnoMPA$yield[ntime.steps] plot(x=urate,y=final.yield, xaxs="i",yaxs="i",type="l",lwd=2,col="blue",las=1, xlab="Harvest rate", ylab="Equilibrium yield", ylim=c(0,2600),cex.lab=1.3) par(new=T) plot(x=urate,y=final.yield.noMPA, xaxs="i",yaxs="i",type="l",lwd=2,col="green",las=1, xlab="", ylab="",ylim=c(0,2600),axes=F) ###compare yield by harvest rates for 25 closed cells out of 51 urate <- seq(0,0.9,0.01) expl.rate=c(rep(urate[i],13),rep(0,25),rep(urate[i],13)), ntime.steps=ntime.steps, ###Three scenarios that produce identical yield of around 1377 tons ###1. closed 25 areas, at u = 0.1 ###2. all areas open at u = 0.032 ###3. all areas open at u = 0.168 urate <- 0.1 expl.rate=c(rep(urate,13),rep(0,25),rep(urate,13)), ntime.steps=ntime.steps, print(x$yield[ntime.steps]) urate<-0.032 xnoMPA1 <- one.d.logistic(ncells=ncells, expl.rate=rep(urate,ncells), ntime.steps=ntime.steps, print(xnoMPA1$yield[ntime.steps]) urate<-0.168 xnoMPA2 <- one.d.logistic(ncells=ncells, print(xnoMPA2$yield[ntime.steps]) plot(x=1:ncells,y=x$N.mat[ntime.steps,], ylim=c(0,1050), xlab="Cell number",cex.lab=1.3,ylab="Abundance",type="l",lwd=2,col="blue", las=1,xaxs="i",yaxs="i") plot(x=1:ncells,y=xnoMPA1$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) plot(x=1:ncells,y=xnoMPA2$N.mat[ntime.steps,], ylim=c(0,1050), xlab="",cex.lab=1.3,ylab="",type="l",lwd=2,col="green", las=1,xaxs="i",yaxs="i",axes=F) polygon(x=c(14,14,38,38),y=c(0,1050,1050,0),col="# ") 15 MPA yield.r
38
Lessons Closing areas reduce the maximum yield
The more areas closed, the lower the maximum yield Closed areas provide insurance against high fishing pressure (bad management, lack of enforcement) For every level of yield with an MPA there is an equivalent yield without an MPA which has: higher biomass outside the MPA lower biomass inside the MPA lower harvest rate where fishing occurs higher CPUE and hence greater profits no completely protected areas for biodiversity
39
Tradeoffs of fishing Percent of maximum New target Old target
Getting to the new target may involve a lot of lost yield in the short term. Exploitation rate Worm B et al. (2009) Rebuilding global fisheries. Science 325:
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.