20 Stock Complexes
In openMSE, every stock belongs to a stock complex. When each stock is managed independently, no complex configuration is needed (i.e., each stock is its own complex).
Multi-stock complexes are used when two or more stocks cannot be distinguished in the data: for example, males and females modelled as separate stocks, or two species landed together in a mixed fishery where catch cannot be attributed to either species individually. In these cases the stocks share a single combined data object and receive a single joint management action such as a total allowable catch that applies to the complex as a whole.
The key consequences of grouping stocks into a complex are:
-
Combined
Obs: theObsobject is defined at the complex level, not the stock level. A single observation model applies to the aggregated data for the whole complex. -
Combined data: fishery observations (catch, indices, compositions) are aggregated across all stocks in the complex before being passed to the MP. The MP sees one
Dataobject per complex. - Joint management advice: the MP returns a single management action for the complex, which is then applied across the stocks within it.
- Joint reference points: \(F_\text{MSY}\) is the single apical fishing mortality maximising total yield across all stocks in the complex (see Chapter 22).
20.1 The Complexes Slot
Complexes are defined via the Complexes slot of the OM object, which is a named list where each element is an integer vector of stock indices belonging to that complex:
Here both stocks (indices 1 and 2) are assigned to a single complex named "StockComplex". The Obs object is indexed by complex and fleet, so a single observation model applies to the aggregated data for the whole complex.
Complexes assigns every stock in the OM to exactly one complex. With four stocks, for example, valid configurations include four complexes of one stock each, one complex of four, or anything in between, such as two stocks combined into one complex with the other two left as their own independent complexes.
When Complexes is not specified, openMSE sets a default automatically:
- If the
OMcontains a single stock, that stock forms its own complex. - If the
OMhas a singleDataobject for multiple stocks, all stocks are placed in one complex. - Otherwise, each stock is treated as its own independent complex.
The MultiStockOM example has two stocks, each its own complex:
Complexes(MultiStockOM) NULL
Complexes(Populate(MultiStockOM, silent = TRUE))$`Example Albacore Stock`
[1] 1
$`Example Butterfish Stock`
[1] 2
ComplexOM has the same two stocks combined into a single complex:
Complexes(ComplexOM)$StockComplex
[1] 1 2
20.2 Stock-Recruitment Linkages
By default each stock’s recruitment is driven by its own spawning production. The SPFrom slot of Stock@SRR can designate a different stock as the source of spawning output used to determine recruitment. The most common case is a sex-structured model where female spawning production drives recruitment for both sexes.
20.3 Reference Points
CalcMSY() finds the single apical \(F\) that maximises total yield across all stocks in the complex. Stock-level reference points (BMSY, SBMSY, etc.) are then evaluated at this complex-level \(F_\text{MSY}\), reflecting the reality that a single management action applies to all stocks simultaneously. See Chapter 22 for details.
