Tuesday, May 27, 2014

A semester with Spatial Agent-based Models

This last semester, I taught a class entitled "Spatial Agent-based Models of Human-Environment Interactions" which introduces graduate students to the use of agent-based techniques as a means of modelling human-environmental interactions. Within the class we cover a variety of applications in areas such as agriculture, forestry, biodiversity, habitat degradation, interactions between human populations and nonhuman species and urban models. As with many of the courses I teach it combines literature reviews with hands-on modelling. One of the requirements of the class is for students to complete a class project where they develop their own agent-based model in their area of interest. As always there were a range of models and I wanted to share some here.

The first is an agent-based model of gentrification in part of Washington DC. Within the model, developers create new houses, residents can move in and out and as a result the demographics of the area changes over time. The movie below gives a sense of the model dynamics.

In another model, a student developed a simple agent-based model which asks the question if random police patrols vs. a concentrated police effort can reduce the number of burglaries in an area. The burglars have a simple routine and commit crimes when their energy reserves fall below a certain threshold. If the police agents see a crime being committed they arrest the burglar. Over time, crime hotspots emerge (detected using DBSCAN) which lead to an increased police presence in an area. The movie below gives a sense of the model dynamics.

In another model,  a student explored how commuting behaviors of agents might lead to traffic jams and how different transportation options might reduce congestion. The movie below gives a sense of the model dynamics.

Overall it was a fun class with many interesting models programed in a variety of languages and toolkits (Python, Java, MASON, NetLogo).


Unknown said...

Hello Professor Crooks
I frequently read your blog and I admire very much the work you do.
I wonder which strategy did you followed in order to get a real engagement of the students in developing models. I worked as lecturer (research assistant) in a course of agent base modeling to graduate engineering students, and every semester we had the same situation: although the students understood the Agent based philosophy, they usually had many problems to build their own models even if some technical assistance was provided and some model examples also (we use mostly Netlogo and some others tried AnyLogic). How did you cope with those issues to get these remarkable results?

Andrew Crooks said...


Thanks for your comments, normally what we do is start early with using models. For example provide a simple model and get the students to carry out some experiments. Over time we set homework's where the students need to alter and improve a simple model along with giving them plenty of tutorial material with respect to say how to go about building NetLogo models. One thing we also stress is that model building takes a lot of time so we get them to start early.