Skip to contents

This vignette rebuilds the multi-gear reef operating model (traps, gillnet, linefish; four species) from the specs shipped with FLOSS.

1 Fishery

The fishery is species-independent: fleets, years and nominal effort.

fy <- load_fishery("reef_3fleets")
fy
#> FLOSS fishery 'reef_3fleets': 3 fleets, 1969-2025
#>     fleet                                         trend sigmaE creep
#>     traps   fudc(e0=0.05, hi=1, lo=0.8, breaks=0.4/0.6)   0.15     0
#>   gillnet fudc(e0=0.05, hi=0.5, lo=1.5, breaks=0.5/0.8)   0.15     0
#>  linefish fudc(e0=0.05, hi=2.5, lo=0.9, breaks=0.6/0.8)   0.15     0
#>  creep_start
#>         1969
#>         1969
#>         1969
plot_effort(fy, nsim = 50)

2 Species

species_library()[, c("id", "common_name", "msy", "source")]
#>                          id             common_name  msy  source
#> 1 carcharhinus_melanopterus     Blacktip reef shark   75 example
#> 2         lethrinus_mahsena         Mahsena emperor 1000 example
#> 3            lutjanus_bohar    Two-spot red snapper  600 example
#> 4             siganus_sutor Whitespotted rabbitfish  750 example
sp <- load_species("lutjanus_bohar")
sp
#> FLOSS species: Lutjanus bohar (Two-spot red snapper)
#>   MSY = 600  productivity: Low-intermediate 
#>   life history: linf=71.4, k=0.212, t0=-1, a=0.01, b=3.04, lm=34.5, tm=3.07, tmax=16, M=0.325, s=0.68, sigR=0.437, rho=0.597 
#>     fleet                                  selectivity relq
#>     traps dnormal(Lpeak=27, sd_left=10, sd_right=13.5)  0.1
#>   gillnet                    normal(Lpeak=37, sd=11.1)  0.5
#>  linefish                     logistic(L50=40, L95=55)  1.0

Selectivity by fleet, from FLRef::sel_la():

FLRef::plot_sel_la(species_sel(sp), age_by = 2, len_by = 10)

3 Operating models

All species share the same effort realisation; nsim is kept small here.

oms <- build_oms(species_library()$id, fy, nsim = 10)
oms$lutjanus_bohar
#> FLOSS operating model: Lutjanus bohar 
#>   fishery: reef_3fleets ( traps, gillnet, linefish )
#>   years: 1971 - 2025  iterations: 10 
#>   refpts: Fmsy=0.185, Bmsy=2040, Bthr=1020, Blim=511, MSY=585, B0=6920 
#>   final year (median): B/Bmsy = 0.782  F/Fmsy = 1.11

The equilibrium is calibrated so that MSY equals the target; MSY under the realised mix of fleets is close to it:

t(sapply(oms, function(o) c(target = o$species$msy,
  calibrated = FLCore::an(FLBRP::refpts(o$brp)["msy", "yield"]),
  realised = c(o$stock@refpts["MSY"]))))
#>                           target calibrated  realised
#> carcharhinus_melanopterus     75         75  73.58093
#> lethrinus_mahsena           1000       1000 990.71084
#> lutjanus_bohar               600        600 585.07897
#> siganus_sutor                750        750 744.14588
plot_om(oms)

plot_fleets(oms$lutjanus_bohar)

plot_fleets(oms$lutjanus_bohar, "catch")

4 Effort creep

With 2% efficiency increase per year in the linefish fleet, nominal effort is unchanged but fishing mortality, and depletion, increase:

fy_creep <- reef_fishery(creep = c(traps = 0, gillnet = 0, linefish = 0.02))
plot_effort(fy_creep, nsim = 50, efficiency = TRUE)

om_creep <- build_om(sp, fy_creep, nsim = 10)
om_creep
#> FLOSS operating model: Lutjanus bohar 
#>   fishery: reef_3fleets ( traps, gillnet, linefish )
#>   years: 1971 - 2025  iterations: 10 
#>   refpts: Fmsy=0.251, Bmsy=2080, Bthr=1040, Blim=521, MSY=626, B0=6920 
#>   final year (median): B/Bmsy = 0.307  F/Fmsy = 2.11