19 Stock Complexes
In openMSE, every stock belongs to a stock complex. When each stock is managed independently, no complex configuration is needed. 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 stream 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 21).
Note that fleets remain stock-specific; each fleet has its own selectivity, retention, and effort schedule defined independently for each stock. Complexes operate above the fleet level, determining how data and advice are aggregated.
19.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.
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.
# Inspect the complexes defined in an OM or Hist object
Complexes(myOM)
Complexes(Hist)19.2 Multi-Stock vs Multi-Complex
It is important to distinguish between a multi-stock, multi-complex OM and a multi-stock, single-complex OM:
-
Multi-stock, multi-complex: each stock is managed independently, with its own
Obs, its ownDataobject, and its own management advice. This is the default whenComplexesis not specified. -
Multi-stock, single complex: all stocks share one
Obs, their data are aggregated into oneDataobject, and management advice is applied jointly. This requires explicitly settingComplexes.
The MultiStockOM example has two stocks each in their own complex; ComplexOM has two stocks in a single shared complex.
# Two stocks, each managed separately (two complexes)
Complexes(MultiStockOM) # NULL
Complexes(Populate(MultiStockOM)) # list length 2
# Two stocks managed jointly (one complex)
Complexes(ComplexOM)19.3 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 biomass drives recruitment for both sexes. SPFrom operates at the OM level and can reference any stock regardless of which complex it belongs to.
19.4 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 21 for details.
