7.2. New fisheries implementation

7.2.1. New algorithm

A new feature provided by the new fisheries implementation is the consideration of bycatch.

The fisheries.catch.matrix.file parameter provides the location of a CSV file containing \(N_{fisheries}\) lines and \(N_{species}\) columns.

The table provides, for each fisheries, the proportion of each fish biomass that is extracted by the fisherie.

In the example provided in Fig. 7.1, fisherie 7 targets the sole (proportion of 100%) but with 10% of bycatches of plaice and horse mackerel.


Fig. 7.1 By catch matrix.

Let’s call this proportion matrix \(A_{N_{fisherie}, N_{specie}}\).

The new fishing mortality process, for a given specie \(s\), is done by computing the mortality rate associated with each fisherie:

\[N_{x, y, s, t-1} = N_{x, y, s, t} \times \exp\left(-\sum_{k=1}^{N_{fisheries}} A_{k,s}F_{k, s, t, x, y}\right)\]

with \(N_{s, t}\) the number of individuals of species \(s\) and \(F_{s,k}\) the fishing mortality rate.


If the stochastic mortality algorithm is used, the order in which the fisheries are accessed is random.

In the new implementation of fisheries, the fishing mortality rate \(F_{s,k}\) is variable in space, time and depends on the size of the targetted specie:

(7.1)\[F_{k, s, t, x, y} = R_k(t) \times S_k(s) \times Z_k(x, y, t)\]

with \(R_k\) the time varying fishing rate, \(S_k\) the size-dependent multiplication factor and \(Z_k\) the space-dependent multiplication factor, whose calculation is detailed below.

7.2.2. Size/Age selectivity

In order to take into account the selectivity of the fisheries on the size or age of the focus species, fishing rate are now scaled by a selectivity curve (\(S_k(s)\) factor in equation (7.1)).

First, the user has to define, for each fisherie, which variable will be used to compute the selectivity (age or len). This is done by filling the fisheries.select.var.fisX parameter.

Then, the user needs to define which kind of selectivity curve should be used. This is done by setting the fisheries.select.curve.fisX parameter, which can take three values. Step selectivity

If fisheries.select.curve.fisX = step, a step like selectivity is used:

\[\begin{split}S(x)=\begin{cases} 0, & \text{if $x<x_0$}.\\ 1, & \text{otherwise}. \end{cases}\end{split}\]

with \(x_0\) being the fisheries.select.l50.fisX parameter Sigmoid selectivity

If fisheries.select.curve.fisX = sigmo, a sigmoid like selectivity is used:

\[S(x)= \frac{1} {1 + \alpha \exp^{-\beta (x - x_0)}}\]

with \(x_0\) being the fisheries.select.l50.fisX parameter, \(\alpha\) the fisheries.select.a.fisX parameter and \(\beta\) the fisheries.select.b.fisX parameter. Gaussian selectivity

If fisheries.select.curve.fisX = gauss, a Gaussian like selectivity is used:

\[S(x)= \exp^{-\gamma (x - x_0)^2}\]

with \(x_0\) being the fisheries.select.l50.fisX parameter and \(\gamma\) the fisheries.select.b.fisX parameter. Examples

The three selectities are show in figure Fig. 7.2 with \(x_{0}=100\), \(\alpha=1\), \(\beta=0.1\) and \(\gamma=0.0005\).


Fig. 7.2 Examples of selectivity curves.

7.2.3. Time-variability

The time varying fishing rates \(R_k(t)\) (equation (7.1)) can be provided using different methods, which are displayed in Fig. 7.3 (for a 24 time step simulation of 2 years).

The method is set through the fisheries.rate.method.fisX parameter, which can take 5 values. Constant

If fisheries.rate.method.fisX = constant, a constant fishing rate (fisheries.rate.const.rate.fisX parameter) is applied during the simulation. The model assumes that this fishing rate is a yearly rate and is converted into a seasonal one (i.e. it is divided by the ndtPerYear variable). By year

If fisheries.rate.method.fisX = byyear, the user provides the number of different fishing rates per year (fisheries.rate.periodsperyear.fisX parameter) and the associated annual fishing rates (fisheries.rate.byyear.rate.fisX parameter). This fishing rate will be repeated for each simulated year.

In the example below (top right), 4 fishing rates per year are provided. Therefore, the fishing rate is updated every 12 / 4 = 3 time steps (cf. red lines). Linear

If fisheries.rate.method.fisX = linear, the user provides an initial fishing rate (fisheries.rate.linear.rate.fisX parameter), a slope (fisheries.rate.linear.slope.fisX) and the number of different annual fishing rates per year (fisheries.rate.periodsperyear.fisX parameter). The fishing rates are computed by using an affine function.

In the example below (middle right), 4 fishing rates per year are provided. Therefore, the fishing rate is updated every 12 / 4 = 3 time steps (cf. red lines). Regime shifts

If fisheries.rate.method.fisX = byregime, the user defines time-steps of regime shifts (fisheries.rate.regime.shifts.fisX parameter) and their associated annual fishing rates (fisheries.rate.regime.rates.fisX parameter) associated with the regimes. Note that len(shifts) + 1 = len(rates).

In the example below (bottom left), there are 4 regimes: at time-steps [0, 2], [3-4], [5-14], [15-23] (cf. purple lines). By Dt

If fisheries.rate.method.fisX = bydt, the user provides a fishing rate for each simulation time-step (fisheries.rate.bydt.rate.fisX). However, if the number of provided rates is less than the total number of simulation time-steps, the fishing rate is repeated cyclically.

In the example below (middle left), only 5 rates are provided. These rates will be applied for steps [0-4], [5-9], etc. (cf. blue lines)


It is the only case where the fishing rate is assumed to be seasonal. In all other cases, it is assumed that annual rates are provided


Fig. 7.3 Examples of time varying fishing rates.

7.2.4. Spatial variablity

Another feature that is implemented in the new fisheries implementation is the possibility to define spatial variability in the fishing effort (\(Z_k(x, y, t)\) factor in equation (7.1)).

The spatial variability is managed in the same way as map fishing movements.

A fishing map must be associated with a fisherie index. This is done by setting the fisheries.fishmap.find.fmapX parameter, which have values ranging from 0 to \(N_{fisheries}-1\).

The user can also provide the years at which the given map is applied ( fisheries.fishmap.year.min.fmapX and fisheries.fishmap.year.max.fmapX parameters). By default, the start and end simualtion years are used.

The user must also provide the season at which the fishing map is used (fisheries.fishmap.season.fmapX parameters).


If a map is missing (at a given year or during a given season), it is considered that the fisherie is deactivated.

Finally, the user must provide the CSV file containing the spatial factors (fisheries.fishmap.file.fmapX).


The model automatically normalize the fishing efforts so that their surface weighted means is \(1\).

Let’s call \(M\) the weighted mean of the provided factors:

\[M = \frac{\sum_{k=1}^{N_{cell}} S_k f_k}{\sum_{k=1}^{N_{cell}} S_k}\]

with \(N_{cell}\) the number of cells within the fisherie area, \(S_k\) the cell surface and \(f_k\) the provided spatial fishing factor.

The new cell factors will be \(f_{k_{new}} = \frac{f_k}{M}\)

For instance, if a fishing area contains 6 cells, with spatial factors of [1,1,1,2,2], the new factors will be [0.71, 0.71, 0.71, 1.43].

If the factors are [1,1,1,0,0] (0 if a MPA overlaps with the fishing area for instance), the new factors will become [1.67,  1.67, 1.67, 0, 0], which can be viewed as a uniform redistribution of the fishing effort.