View source: R/simulation_functions.R
project | R Documentation |
Runs the FishRAM model for a specified recruitment scenario. Full details of the model specification can be found in the supporting information of Tidbury et al. (2021), however some details have been extended for this package (see details below).
project( params, R, t_start = 1, t_end = (length(R) + t_start - 1), R_init = NULL, CLim_func = NULL, CLim_alloc = NULL )
params |
An object of type |
R |
A |
t_start |
The year which forms the start of the simulation. The default is 1. |
t_end |
The year which forms the end of the simulation. The default is |
R_init |
The initial recruitment value. Only required if |
CLim_func |
The catch limit function. This should be a |
CLim_alloc |
The catch allocation across both fleets. This should be a |
Recruitment can be specified in 3 ways using different forms of the R
parameter:
A numeric
of length 1, giving the constant recruitment across the duration of the simulation.
A numeric
of length t_end - t_start + 1
, specifying the recruitment at each time step of the simulation.
A function
which calculates recruitment from the adult stock size at each time step. This function should have exactly one argument (the adult stock size) and return a numeric
of length 1. If using a function, the R_init
argument should also be passed through to specify the initial recruitment at the start of the simulation.
An object of class BioeconomicSim. See the BioeconomicSim-class
help file for a full list of model outputs included in this object.
Mortality reparametrisation. To allow for a larger range of mortalities, the mortality in FishRAM
is parametrised differently to the mortality in Tidbury et al. (2021). The stock dynamics for the adult population are instead calculated through
S_{A, t} = \exp(M_A + (1 - \varphi δ)F_{R, t} + (1-Γ η)F_{C, t})S_{A, t-1} + D_{t}S_{J, t}
. With the landings of each fleet now calculated as
L_{R, t} = W_C \frac{(1-δ)F_{R, t}}{M_A + (1 - \varphi δ)F_{R, t} + (1-Γ η)F_{C, t}}S_{A, t}
L_{C, t} = W_C \frac{(1-η)F_{C, t}}{M_A + (1 - \varphi δ)F_{R, t} + (1-Γ η)F_{C, t}}S_{A, t}
This is equivalent to assuming that all mortalities (commercial, recreational, and natural) are applied simultaneously to the adult stock.
Initial values For the first 5 years of the simulation, some quantities relying on the history of simulation are calculated differently, by assuming some values were static prior to the start of the simulation.
Number of trips. The number of trips of the commercial fleet T_C depends on the profit of the fleet from 2 years ago. The commercial fleet profit is therefore assumed to be constant before the simulation starts (i.e. for time t <= 0) to ensure that T_C can be calculated for the first 2 years.
Maturation. The fraction of juveniles maturing into adults in a given year D_t is estimated from the recruitment values from 5 years previously. Recruitment is therefore assumed to be constant before the start of the simulation so that $D_t$ can be calculated for the first 5 years.
Hannah J Tidbury, Angela Muench, Philip D Lamb, Kieran Hyder, Balancing biological and economic goals in commercial and recreational fisheries: systems modelling of sea bass fisheries, ICES Journal of Marine Science, Volume 78, Issue 5, August 2021, Pages 1793-1803
#loads in the relevant parameters data("seabass") sim <- project(params, R = 8606000, t_start = 1990, t_end = 2030) #Runs the simulation with 20 years of high recruitment followed #by 20 years of low recruitment R <- c(rep(23151200, 20), rep(757600, 20)) sim <- project(params, R = R) #Generates recruitment from a type II functional response #recruitment function with log Gaussian noise. rec_func <- function(stock){ return( 1.5*stock/(7e-4 + 1.3e-4 * 1.5e-3 * stock)*exp(rnorm(1,mean=0,sd=0.9)) ) } sim <- project(params, R = rec_func, t_start = 2010, t_end = 2050, R_init = 1e4) # Including management strategies # MSY as calculated by the original Tidbury paper CLim_func <- function(stock){ return(0.203/(0.203 + 0.24) * stock * (1 - exp(-(0.203 + 0.24)))) } # All allocated to the commercial fleet sim <- project(params, R = rec_func, t_start = 2010, t_end = 2050, R_init = 1e4, CLim_func = CLim_func, CLim_alloc = c(1,0)) # All allocated to the recreational fleet sim <- project(params, R = rec_func, t_start = 2010, t_end = 2050, R_init = 1e4, CLim_func = CLim_func, CLim_alloc = c(0, 1)) # Allocated equally across both fleets sim <- project(params, R = rec_func, t_start = 2010, t_end = 2050, R_init = 1e4, CLim_func = CLim_func, CLim_alloc = c(0.5,0.5))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.