Simulating All the Piping Plovers: Part 1

A (long) while back, I talked about a certain type of model used to simulate life cycles of animal species called agent-based models (ABMs for short), and I walked you through a pseudo-ABM using humans as an example. A little bit before that, I also brought you through some facts about the endangered piping plover.

Today, I’d like to show you what I’ve been working on for the past 8-months in combining these two together; that is, creating an agent-based model for use with the endangered piping plovers. The model I built, however, is a bit different than traditional agent-based models. Remember, in our human example, how each individual human was considered an agent? As it turns out, that tends to be a problem for computers as you try to simulate more and more agents. The computer can handle it, but the simulation speed slows down significantly as you try to simulate more agents.

To combat this, I developed the model using a variant called an environmental agent-based model (enviro-ABM). These types of models treat environment cells as agents rather than treating individual animals as agents. If that doesn’t quite make sense yet, keep reading!

A major part of these types of models is the environment that the animal species lives in. For the piping plover project, I chose Sauble Beach to study.


If you haven’t been to Sauble Beach before, it is a very popular tourist beach on the Bruce Peninsula in southern Ontario. Back in 2007, piping plovers nested there for the first time in 30 years (!), and have been nesting there ever since. A major problem, however, is how busy the beach is during piping plover breeding season. The goal of my project was to try to create a model that could help with making conservation and management strategies that would help both tourists at the beach and, of course, the breeding piping plovers.

The first step was to digitize Sauble Beach! I did this by taking satellite imagery of an area of Sauble Beach and using a program called ArcMap 10.5 to create “regions”. These regions were based off of the different habitats on the beach. I chose 6 habitat types in total and ranked them based off of their foraging quality (i.e. what habitats provided the best food for piping plovers):


You’ll notice that I assigned each habitat type a number between 0 and 5. The numbers don’t actually have any significance for each habitat type, but they are a way for a computer to be able to differentiate between habitat types. I can’t feed the model (which is just a bunch of computer code, after all) a digitized picture of Sauble Beach. But I can convert that picture, that only contains 6 colours in total, to a file that contains numbers from

Remember how I said earlier that I am using a model that treats environment cells  as agents rather than the individual animals? Well, here are your environment cells! Each number in that file above represents a 1m X 1m plot of land in Sauble Beach. The numbers in that file correspond to which habitat type is predominant in that 1m X 1m plot of land. Since I chose an area of Sauble Beach that measures 5366m X 2040m, that means that I have a total of 10,946,640 1m X 1m plots of land, which we will now call “enviro-agents”. Instead of simulating each individual piping plover, I will be simulating movement and behaviour of piping plovers within the context of those 10,946,640 enviro-agents. In short, I’ll essentially be simulating the environment rather than the animal.

Perhaps you’re thinking that it’s silly to now have over 10 million agents to simulate when there is no where close to 10 million piping plovers. Surely, it would have been easier just to simulate the 20 or so piping plovers that would be on Sauble Beach?

The neat thing about enviro-ABMs is that I only have to simulate enviro-agents that contain piping plovers. All the other enviro-agents just sort of sit there and wait until maybe a piping plover moves onto it. So yes, I could have 20 piping plovers in the simulation, but if 4 of them are in one enviro-agent, 4 in another, and so on, that’s only 5 agents that I am simulating rather than 20. For populations as small as the piping plover, I do admit that it doesn’t make THAT much of a difference for speed. However, as you’ll find out later, being able to fully manipulate and simulate the environment does still make it nice for experimentation.

So now, we have our enviro-agents. They are a 1m X 1m plot of Sauble Beach with a specific habitat type associated with them. Now we need to add more information! In a given simulation, I want to keep track of things like where nests are, where predators might be, where humans are, and, of course, where piping plovers are. For this project, I wanted to keep track of their weights. So, these are the attributes I want to store in a given enviro-agent!


This is only an example of what I can store in these enviro-agents. In this cell, we see that the ID of the cell is just a numeric ID, it has an open beach habitat type, there is a nest there, there are predators there, but there are no humans. We also see information about when the nest was created, when eggs were laid, and when they hatched. Finally, we see a list numbers that correspond with “chick weights”. Since there are four numbers there, that indicates that there are four piping plover chicks in this 1m X 1m plot of land.

Let’s recap what we’ve done so far!

  • Using an aerial photograph of Sauble Beach, we created regions consisting of different habitat types
  • We converted this digitization into a file which numbers 0-5 so that our computer model can read it
  • We assigned each of those numbers to represent a 1m X 1m area of Sauble Beach. These are our “enviro-agents”
  • We created different attributes and information to store at each of these enviro-agents, including information about the piping plovers

In summary, we now have a full environment for which we start to simulate some piping plovers!

Since there is plenty more information to come, I’ve decided to split this post up into 2 posts, so as to not bombard you with a bunch of information at once! In my next post, I’ll go through how the simulated piping plovers decide how and where to move and how they decide to forage. Additionally, I’ll show you the experiments we did on these simulated piping plovers and the implications they could have for management decisions.

Thanks for reading! Now, onto Part 2!


One thought on “Simulating All the Piping Plovers: Part 1

Add yours

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at

Up ↑

%d bloggers like this: