a-b-street / a-b-street/abstreet

Activity modelling

Open
#424 5 comments 0 reactions 0 assignees View on GitHub
backlog
Dominant language
Rust
Stars
8.2k
Forks
380
PR merge metrics
No merged PRs in 30d

Description

#154 introduced the "proletariat robot" method for generating [input](https://dabreegster.github.io/abstreet/trafficsim/travel_demand.html) to the traffic simulation. The more general approach extends to more activities besides going home and to work. Yesterday at the [Amazon Hack for Good event](https://democracylab.org/index/?section=AboutEvent&id=2020-sspa-hack-for-good), a small team took a first stab at this. This issue organizes the remaining work. The code lives [here](https://github.com/dabreegster/abstreet/tree/master/popdat/src).

- [ ] Automate the downloading and processing of US census data from https://www.census.gov/geographies/mapping-files/time-series/geo/kml-cartographic-boundary-files.html and http://census.ire.org/data/bulkdata.html
- [ ] When US census data isn't available, guess number of residents using the OSM-tags-and-building-area approach from the P.R. model
- [ ] Research other standard census sources outside of the US
- [ ] Find and adapt a set of person "profiles" like college student, primary school student, worker, caretaker, etc, along with their typical schedule of activities
- [ ] Continue improving the mapping between OSM amenities and activities
- [ ] Figure out how to compare the results from our approach with something well-tuned like the Soundcast model. Since the number of people living in each building should roughly match up because we're using similar land use / census data, maybe quantify how "different" two generated people are in their schedule.
- [ ] Make a UI to tune parameters easily. Players would choose "auto-generated from census" from the traffic dropdown, get some reasonable default, but then have an edit button where they can understand how the model works, and control different parts of it interactively.
- [ ] Add a step to the pipeline to generate more off-map trips, particularly between two ends of a highway passing through the map.
- [ ] Write up the approach clearly, then communicate it to other groups building activity models, and get feedback on our approach.
- [ ] Clean up the prolet robot generator in favor of the generalization

The prolet robot model idea is described [here](https://github.com/dabreegster/abstreet/issues/154#issuecomment-656081196). The generalized pipeline works like this:

1) For a map of lower Manhattan, find census data that says how many people live in each census tract
2) Find all residential buildings inside each tract. Generate individual people, randomly assigning homes and demographics based on the aggregate stats
2) Classify each person as a student, worker, caretaker, etc
3) Randomly generate a schedule for each profile. (Wake up at 7, go get breakfast for 30 mins, go to school for 5 hours, …)
4) Pick specific universities / cafes / etc for each activity
- Which cafe will somebody go to?
- Will they drive, bike,walk, or take public transit?

Contributor guide

No contributing guide indexed for this repository

Research direction

The code is in popdat/src. Start by reading the linked comment describing the proletariat robot model and the generalized pipeline steps. The work involves integrating census data, defining person profiles, mapping OSM amenities, and building a UI. This is a large, open-ended research and implementation project, not a single contained task.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
data, data-engineering
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.