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
)An FLCore::FLStock object containing stock and fishery information.
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.
Integer. Number of years over which the mean reference fishing
mortality is calculated. Defaults to args$nsqy as supplied by
mse::mp().
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).
A list of management-cycle dimensionality arguments supplied
automatically by mse::mp(), including at least dy and nsqy.
An FLCore::FLQuant used to record intermediate values and decisions during MP evaluation, passed through unchanged by this method.
A list with two elements:
ctrlThe 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.
trackingThe tracking object, returned unchanged.
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".
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)
} # }