Calculate Fishable Revenue by Patch and Fleet
Source:R/calc_fishable_revenue.R
calc_fishable_revenue.RdComputes the revenue standing available to each fleet in each patch: the
intersection of biomass at age, the fleet's vulnerability at age, and price.
Used by allocate_effort when a fleet's
spatial_allocation is "fishable_revenue".
Arguments
- b_p_a
Named list of biomass-at-age matrices (patches x ages), one per species, named to match
fauna. Insimmarthis is theb_p_astored for the previous step, which is the biomass the current step is about to fish.- fauna
Named list of fauna objects (e.g. from
create_critter).- fleets
Named list of fleet objects (e.g. from
create_fleet), each with ametierslist.
Details
For fleet \(f\) and patch \(p\), summing over species \(s\) and ages
\(a\):
$$FR_{p,f} = \sum_s price_{s,f} \sum_a B_{p,a,s} \, v_{p,a,s,f}$$
where \(B\) is biomass at age and \(v\) is the metier's vul_p_a
(spatial catchability times selectivity at age).
Why this exists
Every other spatial-allocation objective is a function of realised fishing:
go_fish computes what a fleet got given the effort it
actually deployed, so the signal reaching allocate_effort at
step \(t\) necessarily describes step \(t-1\). When habitat changes on a
timescale close to the time step – seasonal migration, say – the fleet is
then always responding to where fish were rather than where they are, and no
value of responsiveness fixes it, because the lag is structural rather
than a matter of step size.
Fishable revenue takes no effort argument. That is the entire point: because it does not depend on how effort is distributed, it can be evaluated against the biomass a step is about to fish rather than the one it just fished, with no circularity and no fixed point to solve. It is also cheaper than the realised objectives, since it needs no Baranov solve.
It is additionally defined where effort is zero, unlike the per-unit-effort
objectives (rpue, cpue, ppue), which are NA
there. A fleet allocating on fishable revenue therefore sees unfished patches
honestly, rather than having to fish somewhere to learn anything about it.
What it gives up
No crowding. The objective is standing stock, not return per unit effort, so within a step there is nothing to stop effort piling into the best patch. Depletion still pushes back, but only from the next step onward – delayed negative feedback, which can oscillate. Consider
memory_halflife > 0to damp it.No costs. Cost depends on effort, so profit-side variants (
ppue,profit) have no fishable-revenue analogue.No fleet interaction within a step. Two fleets on the same stock do not see each other's effort; they feel each other only through next step's depleted biomass.
Not an ideal free distribution.
rpueand the marginal rules relax toward equalised returns. This one relaxes toward effort tracking standing stock, which is a different equilibrium – "fish where the fish are" rather than "fish where the next unit of effort pays the same everywhere". Neither is wrong; they are different fleets.