Building an Agent-Based Model with Improbable’s SpatialOS

A diagram of Spatial OS (source: http://improbable.io/learn-more)

A diagram of Spatial OS (source: http://improbable.io/learn-more)

I recently spent a week working with improbable, a tech startup in London. Improbable are in the process of creating a simulation engine called SpatialOS. Basically, the idea is to create a platform that researchers/developers/etc. can use to simulate massive systems that have large numbers of interacting units. The thing that is particularly nice about SpatialOS is that it seamlessly splits up a large model into smaller chunks, and distributes these chunks to different cores, or different computers across a network. This will make it possible to simulate huge systems, like cities, by spreading the work over a number of different computers in the cloud.

The software is still under development, but it’s easy to use. After a couple of days I had learned the basics and was able to implement a simple agent-based model of people commuting in Leeds (see the video below). The model reads in information about the number of people who live in each Lower Super Output Area in Leeds (LSOAs are a neighbourhood boundary used for the census and other administrative things) and where they commute to. It has a 24-hour clock and the individual agents go to work in the morning, coming home again in the afternoon. At the moment it only simulates 1,350 agents, but when the model is scaled-up on a larger computer system it should be possible to model to the 750,000 people in the city.

Another nice feature of the software is that it has been integrated with the Unity game engine. This provides a good 3D interface to view a running model, and also provides access to advanced features like physics models that are usually beyond the capabilities of most modellers. The video above shows the model running with Unity as the front-end.

On the whole it’s very exciting, and I’m looking forward to continuing to develop my agent-based model of urban flows with it.