Rescales each stock's catchability (its column of sys$Q, across all
metiers) so that the open-access equilibrium reaches a target B/Bmsy per
stock, while ms_tune() keeps the segment shares of days at
sys$segments with total days held fixed (the overall effort level and
the catchability scale are not separately identifiable).
Usage
ms_condition(
sys,
target,
range = c(0.05, 1.5),
cap = 1000,
gamma = 1.5,
outer = 4,
inner = 12,
tol = 0.02,
damp = 0.8,
years = 300,
verbose = TRUE,
recost = TRUE,
...
)Arguments
- sys
an
ms_system(costs already roughly tuned, e.g. byms_tune()).- target
named vector of target B/Bmsy (names = stock names or codes);
NAor missing stocks are free.- range
lower and upper limits of the targets.
- cap
fleet capacity (days) by segment.
- gamma
profit preference.
- outer, inner
number of outer (cost tuning) and inner (catchability) iterations.
- tol
tolerance on |B/Bmsy - target| for the inner loop.
- damp
damping exponent of the catchability update.
- years
years to equilibrium.
- verbose
print progress.
- recost
if
TRUE(default), each metier's daily cost keeps its ratio to the metier's unfished revenue rate as catchability changes, so a metier whose main stock gets a lower catchability does not keep a cost sized for the old one (which would leave it unfished).- ...
passed to
ms_simulate().
Value
The conditioned ms_system, with attribute conditioning: a data
frame of targets and achieved B/Bmsy and F/Fmsy, and the catchability
multipliers.
Details
In the discrete Schaefer model B/Bmsy = 2 - F/Fmsy (with F/Fmsy as
h/hmsy, see ffmsy()), so each inner step multiplies a stock's
catchability by ((2 - target) / current F/Fmsy)^damp. Stocks with an NA
target are left free. Targets are clamped to range.