Simulating Urban Patterns of Life:
A Geo-Social Data Generation Framework
Authors
Joon-Seok Kim, Hamdi Kavak, Umar Manzoor, Andrew Crooks, Dieter Pfoser, Carola Wenk, Andreas Zufle
Abstract
Data generators have been heavily used in creating massive trajectory datasets to address common challenges of real-world datasets including privacy, cost of data collection, and data quality. However, such generators often overlook social and physiological characteristics of individuals, and their results are often limited to simple movement patterns. To address these deficiencies, we propose an agent-based simulation framework that facilitates the development of socially plausible models of human behavior, in which agents correspond to individuals that act contingent on personal preferences, goals, and needs while at the same time within a realistic geographical environment. Researchers can use a drag-and-drop interface to design and control their own world including the geospatial and social (i.e. geo-social) properties. The framework is capable of generating and streaming very large data that captures the basic patterns of life in an urban area. Streaming data from the simulation can be accessed in real time through a dedicated API.

Demonstration
by Joon-Seok Kim
on November 6, 2019
at Chicago, Illinois, USA
Main features
- Drag-and-drag style model builder
- Simulation based on human behavior model
- Streaming (ZeroMQ PUB/SUB patterns)
Model Builder
Build your own model with our model builder.
Patterns of Life
We can observe patterns of life. The following figures shows mobility and hunger level of agents over time.
06:00
07:00
12:00
13:00
17:00
18:00
22:00
23:00
Analysis
Our framework enables users to perform various analysis using Big Data tools such as Spark Streaming. We demonstrate a use case of streaming data analysis on a Zeppelin Notebook.
Notebook Examples:
Sample data description
File type: CSV
Number of agents: 10,000
Step size: 5 minutes
Period: 1 week (2016 steps)
Data size: 5 GB
Header information (name/type):
time (millisecond), id (String), step (Long), workLocation (WKT), money (Double), homeLocation (WKT), destination (WKT), workedHour (Double), wage (Double), currentLocation (WKT), sleep (Double), food (Double)
Example: