The primary entity of the model is the boat. The boat represents both the business unit as well as the decisions and memory taken by its captain. Boats are all assumed independent from one another.
The biology is represented by a biomass value for each cell of the map. We model its movement and recruitment process.
Minor entities that take no actions per se are the ports, the social network tying the fishers, the market for fish and the regulations in place in the fishery.
There is no policy-maker agent as all the policies are set exogenously by parameters.
Boats are defined by their bank balance, current location, current gear, fishing experience, friendship network as well as their decision making algorithms (where to fish, when to come back and which gear to use). Biomass at each location is defined by a vector where each element is the weight of fish for that particular species at that location.
I replicate here the parameter table from the baseline scenario in section 2.1.2 of the Electronic Supplementary Material(ESM)
Parameter | Value | Meaning |
---|---|---|
Biology | Logistic | |
\(K\) | 5000 | max units of fish per cell |
\(m\) | 0.001 | fish speed |
\(r\) | 0.7 | Malthusian growth parameter |
Fisher | Explore-Exploit-Imitate | |
rest hours | 12 | rest at ports in hours |
\(\epsilon\) | 0.2 | exploration rate |
\(\delta\) | \(\sim U[1,10]\) | exploration area size |
fishers | 100 | number of fishers |
friendships | 2 | number of friends each fisher has |
max days at sea | 5 | time after which boats must come home |
Map | ||
width | 50 | map size horizontally |
height | 50 | map size vertically |
port position | 40,25 | location of port |
cell width | 10 | width (and height) of each cell map |
Market | ||
market price | 10 | $ per unit of fish sold |
gas price | 0.01 | $ per litre of gas |
Gear | ||
catchability | 0.01 | % biomass caught per tow hour |
speed | 5.0 | distance/h of boat |
hold size | 100 | max units of fish storable in boat |
litres per unit of distance | 10 | litres consumed per distance travelled |
litres per trawling hour | 5 | litres consumed per hour trawled |
Regulations, market price and biological carrying capacity are always exogenous to the model.
Space is included as a gridded matrix, each cell representing a square of equal area and we assume that movement between one cell and another is always determined by the distance between their two centres.
All model runs have a daily time step, even though this parameter could be modified. More precisely each step each boat is given a budget of 24 hours they can use to travel, fish or stay at port. Map cells in the conceptual runs are assumed to be 10km squares.
Each step fishers act first, then the biology (movement, growth and so on) and then the policy (market price changes, quota trading and so on).
The order in which the model’s components are activated for each step (by default a step is 24 simulated hours)
Technically each boat is coded as a state machine, as shown here:
A state-machine representation of the fisher
Fishers decisions are when to leave the AtPort
state, when to stop fishing (that is when to break the Fishing
-Arriving
loop) and where to go fish (breaking the Moving
loop). Whenever a boat runs out of its hourly budget, it is frozen in whatever last state it happened to be in. The boat resumes from the frozen state when it is its turn again.
Fish (in the biology step) move every day between neighbouring (in the Von-Neumann definition) cells if there is a difference in their biomasses. The daily movement between two cells is given by: \[ m * ( \text{Biomass at cell } i - \text{Biomass at cell } j ) \] Where \(m\) is a parameter describing fish spreading speed. With \(m=0.001\) two undisturbed cells take about 5 years to equalize their biomass. Every year the surviving biomass in each map cell grows logistically with its own carrying capacity \(K\) and Malthusian parameter \(r\). \[ \text{Biomass}_{t+1} = \text{Biomass}_{t} + r * \left( 1 - \frac{\text{Biomass}_{t}}{K} \right) * \text{Biomass}_t \] Quota regulations reset at the end of each year as do fishing seasons in the policy part of the step.
The biology follows a simple logistic growth function. It assumes no interactions between species and requires no age or length structure.
Catchability is also assumed as fixed proportion of biomass available in each cell for each hour of effort.
These assumptions are common in simple fishery models and we found no benefit in increasing their complexity.
The GitHub repository contains code and examples with real geography, schooling, age structures as well as selectivity and retention curves. They however play no part in the examples shown in this paper.
The boats are assumed to be profit maximizing. However they are also assumed to have no information about the state of the stock or its location.
We model the profit maximization problem as a modified version of the \(\epsilon\)-greedy bandit algorithm (see the monograph by Bubeck and Cesa-Bianchi 2012 as an introduction). These are sometimes used in social science and in agent-based models (see ??? for example) but are more common in computer science industrial application.
We chose a bandit algorithm as it represents an efficient and simple way to deal with the exploration-exploitation trade-off for all kinds of discrete choices. We aimed for agents that are profit-maximizers without hyper-rationality.
The model is conceptual and uses no data, however the 20% exploration rate was described to us during informal interviews with fishers in California groundfish fishery.
None.
All decision making is done by the boats. All boats act and decide individually.
The boat needs to decide when to depart (in the scenarios described in the ESM this is simply a matter of waiting 12 hours), where to fish, when to come back (in the scenarios described in the ESM this happens when the hold is full or the boat has been out more than 5 days) and what gear to use.
Agents are profit maximizing and proceed by trial and error (as well as imitation) as described below. Explicit profit maximization is impossible because the agents do not know how much fish is in the sea and where. The trial and error can be seen as an imperfect hill-climbing routine, looking for the profit function peak over time.
With probability \(\epsilon\) the boat explores a new slot fishing spot. If not exploring the agent copies the fishing spot of her most profitable “friend” (imitation). If the boat is doing better than her friends, she returns to the same fishing spot as the previous trip (exploitation). In pseudo-code terms:
# with probability epsilon, explore
if(runif()<epsilon)
# shock your position by delta
position <- position + runif(min=-delta,max=delta)
else
# if a friend is doing better, copy them
if(profits[me] < profits[best_friend])
position<- positions[best_friend]
# otherwise keep fishing where you usually go
fish(position)
The decision algorithm described above is adaptive as it keeps trying new areas and imitating friends who are doing the same. An example of adaptation to gas price changes is available in the ESM section 2.3.
Fishing decisions are inherently spatial as they return which cell to fish in. Distance enters the profit function both in terms of time out and in terms of travelling costs.
Only indirectly as a boat can only be at one place at a time. When exploring a new area, the agent compares today’s profit there with yesterday’s profit in the previous favourite cell. There is an implicit assumption that profits are stable within that time frame, but no evidence can be collected to support it.
Agents compare fishing locations by profits made per hour out so that a bountiful area could still be rejected if it takes too long to reach.
The boats’ algorithm deals with unknown spatial distribution by sampling it. However the algorithm does not deal with sampling uncertainty (that is, the agents believe that the profits made each trip are a fair representation of the overall quality of the area fished).
The examples shown in the conceptual paper do not have learning as defined in (???). A replicator dynamic is however available in the Github repository for agents to switch their adaptation strategy, either by changing parameters or by changing algorithms wholesale.
Collective adaptation emerges from the model through imitation. No collective decision making is implemented.
The major sensing process in this model is a by-product of fishing: at the end of each trip the agent knows how much money they have made. The process is not stochastic per se but it can still be erroneous. In the time it takes for a fisher to go back to port and decide whether to go to back to the same spot, fish may spawn or move and other boats might trawl the same area. So that while the sensing itself is not erroneous it may be wrong by the time the agent acts on it.
Boats can see the location targeted and the profit made by friends within their social network. This information can only be sensed about the last complete trip. This means that even though the sensing process is not erroneous, the information value depreciated as biomass moved and competitors fished the area.
The sensing only involve one map cell at each time and is only accomplished by visiting the area.
They are modelled explicitly as the agent parses its trip level information to extract the profits per hour made during it.
There are no cognition costs but there are exploration costs (the exploration-exploitation trade-off). Exploration costs are implicit and apply whenever a boat explores somewhere new that turns out to be worse than the currently known best.
Agents use only the profit per hour of their last trip (as well as their friends’ last trip.)
Agents assume that rewards are stationary: repeating the same trip should return the same amount of profits. This assumption is wrong, even within the model, but it’s good enough for exploration and imitation to drive agents to high profits.
Erroneous prediction is implemented indirectly. If an agent completes a very profitable trip, they’ll predict the same profits next time the trip is made. Others may copy them (or independently discover the same area) or fish move however and the original prediction will likely be false.
Boats fish out biomass directly. Boats affect one another only indirectly (by depleting biomass or sharing information).
Interactions between biomass and boats depend on gear. Interactions between boats depend on a randomly generated social network. This random network is generated exogenously and does not change through the simulation.
We do not define how communication takes place. Imitation works regardless of whether agents are actively talking on the radio or subtly spying each other on the radar
Agents know only about the last trip of their friends (connected boats). The network is fixed and exogenous.
Agents do not belong to any collective and each boat optimises its own profits alone. However temporary collectives might emerge endogenously. For example in the “fishing the habit line” example in section 2.4.1 of the ESM, agents split into groups, each targeting the border of a separate rocky area. These collectives emerge primarily due to social network connections and their membership can change quickly.
Not represented.
In most simulation agents are homogeneous in terms of gear, boat size, speed and decision making. However, since the decision-making itself is adaptive, path-dependent and stochastic differences can emerge even from an initial homogeneous state. As the “habitat line” fishers in section 2.4.1 shows.
In most scenarios agents differ in terms of exploration range (the \(\delta\) parameter). Agents are also heterogeneous in terms of initial gear in section 2.7, 3.2 and 3.3; since in these sections gear is also being modified, these differences are amplified through the course of a simulation run.
Agents in this set of simulation all use the same decision making routine with different \(\delta\) parameters. Heterogeneity in outcomes emerges as the same adaptive decision-making algorithm interact with different fishing histories and experience.
The parameter tables in each scenario described by the ESM (sections 2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8) show which variables are random and from what distribution they are drawn.
Within each time step, the order in which agents activate is random (as per MASON default implementation).
Whenever an agent explores, it samples a random cell within the neighbourhood where it previously fished as described in the ESM (section 1.1). The same mechanism applies when agents sample new gear (as in the ESM section 2.7).
Each scenario in the ESM collects a different set of observations in order to test a particular pattern.
Section 2.1 collects yearly number of tows for and biomass remaining in each cell of the map. Section 2.2 collects daily average distance from port for all boats in the model. Section 2.3 collects yearly biomass left and CPUE (catches per unit of effort) in each simulation. Section 2.4 collects aggregate average distance from port as well as number of tows per map cell. Section 2.6 collects overall average catches in each simulation. Section 2.7 collects daily biomass and number of fishers using each gear type.
Hyperstability, fishing the line, optimal gear switching without knowledge of the underlying biology, race to fish without tradeable quotas and geographically optimal targeting when a full ITQ is introduced.
The model is coded in Java using the MASON library(Luke et al. 2003).
We use the spearmint python library for Bayesian optimisation(Snoek, Larochelle, and Adams 2012; Hernández-Lobato et al. 2015).
The model is available under the GPL3 open source library on Github at this repository
In every scenario, boats start with no money, anchored at port with no fish in hold. Biomass in each cell of the map is randomly selected given the parameter table for each scenario (printed in the ESM). Fishers may be heterogeneous in terms of initial gear (see for example, section 2.8 of the ESM) or behaviour (for example the \(\delta\) parameter), in which case these are also randomly set at \(t=0\).
A new random seed is used for each run and each scenario.
All values are chosen arbitrarily and their sensitivity tested in the ANT tests that accompany each scenario in the ESM.
When coupled with OSMOSE (see section 2.5 of the ESM), that model drives the biological processes. Fishing mortality from POSEIDON feeds back into OSMOSE.
Bubeck, Sébastien, and Nicolo Cesa-Bianchi. 2012. “Regret Analysis of Stochastic and Nonstochastic Multi-Armed Bandit Problems.” arXiv Preprint arXiv:1204.5721.
Hernández-Lobato, José Miguel, Michael A. Gelbart, Matthew W. Hoffman, Ryan P. Adams, and Zoubin Ghahramani. 2015. “Predictive Entropy Search for Bayesian Optimization with Unknown Constraints,” February. http://arxiv.org/abs/1502.05312.
Luke, Sean, Gabriel Catalin Balan, Liviu Panait, Claudio Cioffi-Revilla, and Sean Paus. 2003. “MASON: A Java Multi-Agent Simulation Library.” In Proceedings of Agent 2003 Conference on Challenges in Social Simulation. Vol. 9.
Snoek, Jasper, Hugo Larochelle, and Ryan P Adams. 2012. “Practical Bayesian Optimization of Machine Learning Algorithms.” In Advances in Neural Information Processing Systems 25, edited by F. Pereira, C. J. C. Burges, L. Bottou, and K. Q. Weinberger, 2951–9. Curran Associates, Inc. http://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf.
Corresponding author:richard.bailey@ouce.ox.ac.uk↩