18  Running the Simulation

Once an operating model has been built, two functions carry it through the rest of the MSE workflow:

  1. Simulate(): reconstructs historical dynamics and conditions the model on the past;
  2. Project(): runs the management strategy evaluation forward in time under one or more candidate management procedures.

18.1 Simulate()

Simulate() takes an OM object and returns a Hist object.

Hist <- Simulate(OM)

Internally, it works through the following stages, in order:

  1. Populates the OM object if needed (see Chapter 17).
  2. Initializes the Hist object from the populated OM and calculates the unfished equilibrium population.
  3. If Depletion@Final is specified on the stock, optimizes catchability so that simulated terminal depletion matches the target (see Section 12.1.1.9).
  4. Optionally calculates the dynamic unfished population dynamics.
  5. Runs the age-structured population and fishery dynamics forward through the historical period, applying fleet-specific fishing mortality, to produce the true historical time series of abundance, biomass, and catch.
  6. Calculates reference points: the unfished spawning per recruit (always), and optionally MSY-based reference points, other \(F\)-based reference points (\(F_{0.1}\), \(F_\text{Max}\), \(F_\text{crash}\), etc.), mean generation time, and the rebuilding-based \(B_\text{Low}\) limit reference point. See Chapter 22.
  7. Optionally calculates a fixed-\(F\)-policy reference yield, for landings and/or total removals.
  8. Conditions the Obs model on historical fishery data and/or generates simulated historical data from it, producing the historical Data object used by management procedures. See Management Procedures and Chapter 7.

Several of these stages are optional, either because they’re not always relevant (e.g. the dynamic unfished trajectory) or because they’re computationally expensive relative to the value they add in every run (e.g. \(B_\text{Low}\)). Which stages run is controlled by the control argument, a named list constructed by SimControl(), for example:

Hist <- Simulate(OM, 
                 control = SimControl(RefLandings = TRUE, 
                                      GenerateData = FALSE))
SimControl() argument Default Controls
DynamicUnfished TRUE Stage 4 above
MSYRefs TRUE MSY-based reference points (stage 5)
RefPoints TRUE \(F_{0.1}\)/\(F_\text{Max}\)/\(F_\text{crash}\)-type reference points (stage 6)
MGT TRUE Mean generation time (stage 6); negligible cost
BLow FALSE \(B_\text{Low}\) (stage 6); substantially more expensive than the other reference points
RefLandings, RefRemovals FALSE, FALSE Reference yield based on landings and/or total removals (stage 6)
ConditionObs TRUE Conditioning the Obs model on historical data (stage 8)
GenerateData TRUE Generating simulated historical data (stage 8)

See ?SimControl for full documentation of each argument, and Chapter 27 for the full mathematical specification of the historical dynamics.

18.2 Project()

Project() takes the Hist object and a vector of management procedure (MP) names, and returns an MSE object.

For each MP, Project loops over every projection time step (typically year) and:

  1. generates that time step’s simulated data;
  2. calls the MP for new advice on management years (or carrying forward the previous advice otherwise);
  3. updates the operating model’s fishing dynamics to reflect that advice;
  4. advances the population one time step.

See Chapter 19 for how that advice-application step works.

MSE <- Project(Hist, MPs = c("CurrentEffort", "CurrentCatch"))

Because every MP is run against the same historical conditioning, differences in outcomes across MPs in the resulting MSE object reflect differences in management strategy rather than differences in the underlying biology or fishery history. See Management Procedures for how Data and Advice objects are structured.

Translating an MP’s advice (a TAC or effort level) into simulated fishing effort, and how implementation error and gradual compliance factor into that, is described conceptually in Chapter 19, with the full mathematical specification in Chapter 30 split by model structure so you can go straight to the case that applies to you:

Your model Chapter
One complex, one fleet Chapter 31
One complex, multiple fleets Chapter 32
Multiple complexes (a multi-stock OM) Chapter 33