Converts a fishing-mortality target set by an HCR into a relative effort multiplier by scaling against a reference fishing mortality computed from recent years. Passing a relative effort target to FLasher::fwd() rather than an absolute F smooths the response to inter-annual variability in fleet dynamics.

effort.is(
  stk,
  ctrl,
  nyears = args$nsqy,
  Fref = yearMeans(fbar(stk)[, ac(seq(dy - nyears + 1, dy))]),
  args,
  tracking
)

Arguments

stk

An FLCore::FLStock object containing stock and fishery information.

ctrl

An FLasher::fwdControl object whose quant slot must be one of "f", "fbar", or "effort" and whose value slot carries the absolute F target from the HCR.

nyears

Integer. Number of years over which the mean reference fishing mortality is calculated. Defaults to args$nsqy as supplied by mse::mp().

Fref

Numeric or FLCore::FLQuant. Reference fishing mortality used as the denominator when computing the multiplier. Defaults to the mean of FLCore::fbar() over the nyears years ending at dy (the final data year).

args

A list of management-cycle dimensionality arguments supplied automatically by mse::mp(), including at least dy and nsqy.

tracking

An FLCore::FLQuant used to record intermediate values and decisions during MP evaluation, passed through unchanged by this method.

Value

A list with two elements:

ctrl

The input FLasher::fwdControl object with value replaced by the dimensionless effort multiplier and relYear set to ctrl$year - data_lag so that FLasher::fwd() interprets the target relative to the correct historical year.

tracking

The tracking object, returned unchanged.

Details

The effort multiplier is defined as $$m = \frac{Ftarget}{F_ref}$$ where \(F_target\) is the value in ctrl$value as set by the HCR and \(F_ref\) is the mean FLCore::fbar() over the most recent nyears years of data.

Setting ctrl$relYear tells FLasher::fwd() to express the effort target relative to the effort observed in that reference year, effectively turning the absolute F recommendation into a proportional change instruction.

An error is raised immediately if ctrl$quant is not one of "f", "fbar", or "effort".

Author

Iago MOSQUEIRA iago.mosqueira@wur.nl

Examples

if (FALSE) { # \dontrun{
data(plesim)

# mpCtrl combining a hockey-stick HCR (F target) with effort.is
ctrl <- mpCtrl(
  est  = mseCtrl(method = perfect.sa),
  hcr  = mseCtrl(method = hockeystick.hcr,
           args = list(metric = "ssb", trigger = 45000,
                       output = "fbar", target = 0.27)),
  isys = mseCtrl(method = effort.is, args = list(nyears = 3)))

run      <- mp(om, control = ctrl,      args = list(iy = 2021, fy = 2035))
run_nois <- mp(om, control = ctrl[-3],  args = list(iy = 2021, fy = 2035))

# Compare with and without the effort.is buffer effect
plot(om, effort.is = run, no_is = run_nois)
} # }