Skip to contents

Returns the feeding level. By default this function uses mizerFeedingLevel() to calculate the feeding level, but this can be overruled via setRateFunction().


getFeedingLevel(object, n, n_pp, n_other, time_range, drop = FALSE, ...)



A MizerParams object or a MizerSim object


A matrix of species abundances (species x size).


A vector of the resource abundance by size


A list of abundances for other dynamical components of the ecosystem


A vector of times. Only the range of times is relevant, i.e., all times between the smallest and largest will be selected. The time_range can be character or numeric.


If TRUE then any dimension of length 1 will be removed from the returned array.




If a MizerParams object is passed in, the function returns a two dimensional array (predator species x predator size) based on the abundances also passed in. If a MizerSim object is passed in, the function returns a three dimensional array (time step x predator species x predator size) with the feeding level calculated at every time step in the simulation. If drop = TRUE then the dimension of length 1 will be removed from the returned array.

Feeding level

The feeding level \(f_i(w)\) is the proportion of its maximum intake rate at which the predator is actually taking in fish. It is calculated from the encounter rate \(E_i\) and the maximum intake rate \(h_i(w)\) as $$f_i(w) = \frac{E_i(w)}{E_i(w)+h_i(w)}.$$ The encounter rate \(E_i\) is passed as an argument or calculated with getEncounter(). The maximum intake rate \(h_i(w)\) is taken from the params object, and is set with setMaxIntakeRate(). As a consequence of the above expression for the feeding level, \(1-f_i(w)\) is the proportion of the food available to it that the predator actually consumes.

Your own feeding level function

By default getFeedingLevel() calls mizerFeedingLevel(). However you can replace this with your own alternative feeding level function. If your function is called "myFeedingLevel" then you register it in a MizerParams object params with

params <- setRateFunction(params, "FeedingLevel", "myFeedingLevel")

Your function will then be called instead of mizerFeedingLevel(), with the same arguments.


# \donttest{
params <- NS_params
# Get initial feeding level
fl <- getFeedingLevel(params)
# Project with constant fishing effort for all gears for 20 time steps
sim <- project(params, t_max = 20, effort = 0.5)
# Get the feeding level at all saved time steps
fl <- getFeedingLevel(sim)
# Get the feeding level for years 15 - 20
fl <- getFeedingLevel(sim, time_range = c(15, 20))
# }