SOEE 5582: Tools and Techniques in Ecological Economics
Assignment 1: Agent-Based Modelling
(50% of final grade, estimated time: 47 hours)
Aims and objectives
• Critical understanding of agent-based modelling
• Ability to perform and interpret calculations using NetLogo
• Formulation of a research report
Submission deadline: Wednesday, 17th March, 2 pm
Reports should be submitted electronically through Minerva, with supporting materials (e.g. netlogo
model files) submitted by email to the topic leader before the deadline. The standard university
penalty of 5 marks per day (including weekends) will be applied for late submission. Any request for
an extension should be made to the School of Earth and Environment Student Support Office (or
Student Education Service) at firstname.lastname@example.org before the submission deadline.
The report should be structured like an academic paper. You are encouraged to follow this general
1. Introduction: should include aims and objectives, project structure, choice and justification
of data selection, critical understanding of the wider literature (both directly relevant and
background material for context).
2. Methodology: should include a clear description of the methodology used.
3. Results: should include a description of the results obtained (as well as relevant graphs,
tables, and figures), a critical evaluation of the results obtained and an understanding of
their uncertainties and limitations.
4. Discussion and Conclusion: should include a critical interpretation of your results, both with
respect to your specific objectives and the wider existing literature, and a synthesis of the
Agent-Based Modelling option (topic leader: Dr Jonathan Busch)
1. Select either the case study provided (common pool resource management, see supplied
description in Appendix A) or an own individual project (discuss idea with topic leader).
2. Implement the model with the ODD protocol and the hints from the supplied description
3. Run simulation experiments according to research questions you have identified.
4. Analyse and interpret the data obtained from the simulation runs.
5. Write up an individual report of your findings. Be sure to connect your results to the wider
literature (ABM examples in that field), and include a critical discussion of the advantages
and limitations of the methods you have used.
Assessment for ABM
In each of these categories, the presentation of the work (e.g. written style, clarity of expression,
correct use of references, consistent referencing system, spelling, grammar and layout) will be
1 Introduction (20 %) Distinction Merit Pass Fail
Clarity of aims and objectives
Research project structure (coherence
Choice and justification of data
Critical understanding of literature and
2 Methodology (20 %) Distinction Merit Pass Fail
Critical understanding of the ABM
framework (including strengths and
limitations of the methodology)
Application of ABM (assessed through
the supporting material you email us,
i.e. Netlogo model)
3 Results (30 %) Distinction Merit Pass Fail
Description and presentation of key
model structure and behaviour
Critical evaluation of your results, both
in themselves and in the context of the
Analysis of uncertainties and
4 Discussion and conclusion (30 %) Distinction Merit Pass Fail
Critical interpretation of your results,
both with respect to your specific
objectives and the wider existing
Synthesis of the main conclusions
Appendix A: ABM Common Pool Resource Management
The task for this project is to develop an agent based model of a common pool resource
management problem and use it to investigate the impact of a range of factors and possible
interventions on the sustainability of the system. This document describes the system you will be
expected to develop a model for, thereby not requiring you to spend much time on justifying the
conceptual model. Instead, you should focus your efforts on implementing the model correctly and
carrying out detailed analysis (including sensitivity analysis) to illustrate the conclusions that can be
drawn from your simulation experiments.
In the following, the model and analysis you should carry out as the basis for your report are
described in detail. On the VLE is a template for the model that has the general structure and some
of the code you will need to implement the model. You will have to complete the model based on
the instructions detailed below. Start by putting the information contained in this document into the
ODD format, keeping it as concise as you can whilst retaining enough details to implement a model.
The sustainable management of forest resources is a common example in common pool resource
management research. Forestry typifies extractive commons dilemmas where the resource (the
forest) is a common pool resource that it is difficult to exclude extractors from, but is diminished by
excessive extraction. Individual extractors decide their own level of extraction and their decision can
be based on a combination of individual factors, social influences and a centralised organisational
For this project, our system consists of a group of 250 households that extract firewood from a
surrounding forest. Households decide at every time step whether to attempt to extract enough
firewood to meet their subsistence requirements or to extract a set higher amount. Their decision is
made on a combination of three factors:
1. self-interest – households benefit from higher extraction and seek to maximise this,
2. rule – depending on the state of the forest, a central organisation attempts to enforce a rule
of subsistence extraction, and
3. neighbours – each household is influenced by what extraction level its neighbours previously
Amongst the households are a number of ‘celebrities’ that will always extract at the higher rate.
These celebrities are also the most socially connected households.
The forest resource has an initial value, grows at a given rate, and has a maximum capacity beyond
which it will not grow. Extraction by households becomes less efficient as the forest resource
declines. The extraction rule is set according to the fraction of forest remaining compared to its
maximum potential capacity, and is updated at regular intervals.
The task for this project is to analyse the dynamic behaviour of the resource and extraction by
households and to test the effectiveness of possible interventions. In particular, the importance of
the form of the social network connecting households, and the position and number of celebrities
within it should be investigated. The impact of varying the relative importance households give to
their three decision factors should be tested. And policies such as capping maximum extraction
levels, or varying how often the rule is updated, should be tested.
There are a total of 250 households including celebrities. Household extraction efficiency is
determined by the amount of forest remaining, = !/"#$
where ! is the current forest remaining and %&' is the maximum capacity of the forest. The
household subsistence extraction level should be set such that it is 0.15 tonnes per month when the
forest is at maximum capacity. The high extraction level should be set at 10 times this level.
The model should use two possible network types to represent the social network connections
between households: a small world network (https://en.wikipedia.org/wiki/Small-world_network)
and a preferential attachment network
(https://en.wikipedia.org/wiki/Barab%C3%A1si%E2%80%93Albert_model). The important difference
between these networks is that in a small world network each household is approximately equally
well connected, whereas in the preferential attachment network there are highly connected ‘hubs’
that have many more connections than other households. These highly connected hubs will be the
celebrities. The Netlogo code to create these networks is already included in the template.
At every time step in the model, households make a decision to either follow the subsistence
extraction level or to follow high extraction. To implement this decision making, a threshold is set
between 0 and 1. If a random number generated in this range is below the threshold, the household
will follow the subsistence extraction level, otherwise it will go for high extraction. The threshold is
calculated using: ℎ ℎℎ = (1 − )( ∗ ℎ + (ℎ ℎ ∗ (1 − ℎ),
where is set to 0.1 by default and reflects the households innate desire for high
extraction, represents the enforcement of subsistence extraction, ℎ determines
the weighting households give to rule following compared to neighbourly influence (i.e. a number
between 0 and 1), and ℎ ℎ is the fraction of neighbours that follow the rule.
The is calculated according to:
= 1 − 12!/"#$
where the factor of ½ ensures that the enforced extraction is low enough to allow the forest to
recover somewhat. This rule should be updated at a regular schedule, for example every 24 months.
The forest has a maximum capacity of 25,000 tonnes of firewood, it will not grow larger than this.
Unlike the households, which are individual agents, the forest should be represented as a single
entity where a variable represents the amount of forest remaining. Forest growth should follow the
!(()*) = !(() + >"#$ − !(()?!(()/"#$
where !(() is the forest remaining at the previous time step, !(()*) is the forest remaining in
the current time step, and = 0.025 is the monthly growth rate. This form of equation prevents the
forest from exceeding its capacity.
Geography does not matter in this model, to get the household networks to look clear, use a world
size of 25x25 with the origin in the centre and a patch size of 16. Each tick of the model should
represent a month, and a suitable timescale for the dynamics is about 1000 ticks. Households should
not change their behaviour every month, instead let a fraction (10%) of households change their
extraction level at every time step.
In your setup procedure, create 250 households at the [0,0] coordinates. Initially, half of them
should be rule followers.
Your model should have a choice between initializing either a small world network or a preferential
attachment network, in the template this is set using a ‘chooser’ input in the interface tab.
Depending on the choice made, your setup procedure should then call either the ‘setup-small-
network’ submodel or ‘setup-preferential-network’ submodel. The ‘setup-small-network’ submodel
requires a global parameter ‘r’ that determines the proportion of random connections, set this to
Following the network setup, change the breed of a given number of households to be celebrities.
To select the most connected households use the following code:
ask max-n-of high-consumer-number households [count link-neighbors]
[ … ]
(look the max-n-of command up in the NetLogo dictionary to see how this works.
The household decision process described above can be implemented in a number of ways, but I
would recommend the following structure:
0. Each agent (household & celebrity) will need two variables; one for its extraction level, and
one that indicates if it is following the rule or not.
1. calculate the rule following and rule breaking extraction levels based on the baseline values
and the current extraction efficiency, e.g. let rule-extraction rule-extraction-
baseline * extraction-efficiency
2. calculate the neighbour-choice as the fraction of neighbours that follow the rule.
a. Hint 1: use the link-neighbors command to create an agentset of connected
b. Hint 2: some agents may not have a neighbour, check for this with an if statement
and set these agents to follow the rule.
3. set the rule threshold parameter according to the equation listed above, using the
neighbour-choice variables you have just calculated.
4. generate a random number between 0 and 1 using the random-float command. If this is
less than the rule threshold, set the households extraction level to the rule-extraction level,
otherwise set it to the rule-breaking level.
a. Hint: don’t forget to set both the rule following indicator and the extraction level
here. And you could change the agents colour here too for the interface to be more
b. Hint: this method of generating a random number and comparing it against a
threshold is a very commonly used pattern when you need to randomly carry out an
action with a given probability.
This project is loosely based on:
Agrawal, A., D. G. Brown, G. Rao, R. Riolo, D. T. Robinson and M. Bommarito II (2013). "Interactions
between organizations and networks in common-pool resource governance." Environmental Science
& Policy 25: 138-146. 学霸联盟