Part 1: Adding predators to the flocking behavior simulation
The Flocking simulation model in Netlogo follows a few simple rules to guide the birds to form flocks. However, even more interesting emergent behaviour happens when predators are present to influence flock behavior. See: https://youtu.be/1ZAavDH37R4 (Links to an external site.)Links to an external site.and read http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0179277 (Links to an external site.)Links to an external site..
There is a preliminary indication that starlings are tending to group into larger flocks when predators are present in order to be safer as individuals. That is, when a predator is seen, the birds fly away from the predator (usually a hawk or falcon) and toward the centre of the largest nearby flock. In your simulation, by defining a predator breed and defining rules for predator behavior and rules to respond to predators, you will attempt to see if it is possible to create some of the emergent behaviors seen in starling murmurations.
Note: there are published variants of such simulations – you will find that these are quite complex – in this part of the assignment it is better to build a simple system that exhibits elements of the observed behavior than a complicated system that produces an exact emulation. As always, make sure you make clear any code or contribution you have sourced from elsewhere with your course coordinator.
Write a section in your report on your work according to the criteria listed at the start of this assignment.
Part 2: The tragedy of the commons
The tragedy of the commons is an old concept in economics deriving from the idea that shared resources will be overexploited by people acting in a rational way. The concept of the tragedy of the commons one of the first formal explorations of the economic concept of externalities. In economics, externalities occur when the cost or benefit of an activity does not accrue completely to the actors involved in that activity.
In this simulation, you can start with a simplified version of the sheep-wolf-grass model from the sheep-wolf predator model from the model library in NetLogo. In your model, you have two farmers (farmer A and farmer B) entities who own and graze sheep on the grass in the simulation. Conceptually the field in your model is divided into three sections as below:
Farmer A can graze her sheep on part 1 and part 3. Farmer B can graze his sheep on part 2 and part 3. As you can see, part 3 is shared – it is the commons. The aim of both farmers is to maximise the number of sheep they keep alive – subject to the availability of grass. If sheep don’t have enough grass they die; if they have too much then they breed. The rules for this dying and breeding are already a part of the sheep-grass-wolf predation model (you have no wolves!).
In this implementation, use slider variables to set maximum number of sheep that each farmer wants to have. Farmers don’t want their sheep to starve but they also want maximum sheep. By manually adjusting the sliders try to find the maximum number of sheep that farmers can have before the population of sheep starts to oscillate up and down (indicating a boom and bust of starvation and breeding). Report on what happens to the grass in each section 1, 2 and 3. Also report on what happens if you stop farmers from using section 3. How many sheep can they run now? What happens if you let one farmer use section 3 but not the other? Address these questions in the section of the report dedicated to this part of the exercise.
Note, as before, there are published models of the tragedy of the commons out there but these are much more complex than the scenario you will need to set up here.
Part 3: Automatic tragedy of the commons
In this section, you must write code that makes the farmers automate the stocking rates of their farms. The farmers will aim to maximise their average number of sheep over time while ensuring that they have a stable population (no wild swings up or down in population – this would be bad!). This means that you will need to track both population and how much the population varies by and set a population that maximises the number of sheep for each farmer (acting independently) while damping the population swings.
Report on the following in the testing description in a third section of your report. What are the stocking rates you get? Are these the same as the manually derived values for part 2? What happens if you get one farmer who is more prepared to put up with wild swings in population? Does she get to run more or less sheep over time? What is the effect of changing the growth rate of grass? Or changing the breeding rate of sheep?
End of questions (make sure you hand in both your code and your report in your zip file!)