tool · draft

PopulationSim

Open-source population synthesiser in the ActivitySim family that builds household and person tables for a region from a census sample and local control totals, as input to travel models.

People & societyMovement & logistics

What is reusable: open sourceunknown dataAPI unknownopen participation BSD-3-Clause

A travel model often needs a list of every household in a region and the people in it, with their ages, incomes and jobs.2 Real lists of that kind are private. PopulationSim builds a synthetic one: an invented population that matches the published counts for each small area, so a model can hold "everyone" without holding anyone's records.2 It began with the Oregon Department of Transportation, which wanted a shared, open tool for statewide, regional and city transport planning.1,2 It is built on ActivitySim, the open activity-based travel model run by a consortium of metropolitan planning organisations and other transport agencies.1,4

It needs two things. The first is a seed sample: real but anonymised household and person records, usually the US Census Public Use Microdata Sample (PUMS) or a travel survey, each with a starting weight.2 The second is a set of controls: totals from the census or from forecasts, such as households by size or people by age, for areas like block groups, traffic analysis zones or counties.2 PopulationSim adjusts the weights of the seed households until they add up to the controls at every level of geography at once, changing the starting weights as little as possible.2 It then turns the weights into whole numbers and copies each sample household that many times.2 The output is a household table and a person table for the region.2

The same machinery can reweight a household travel survey to match control totals, produce cross-tabulated counts for older four-step travel models, or adjust an existing regional population for a smaller study area.2 It runs from the command line with a folder of configuration files and a folder of data, and the documentation includes a page on checking the results against the controls.1,2

The result is only as good as its controls. Attributes that are not controlled are carried along from the sample households and are not matched to anything local.2 The code is BSD-3-Clause and active; the latest GitHub release is v0.10.0 from November 2025, while the documentation site still describes version 0.5.1.2,3,5

form
open-source Python package with a command-line tool
group
People and populations
homepage
https://activitysim.github.io/populationsim/
licence
BSD-3-Clause
cost
free

does a similar job

  • simPop tool draft

    R package by Matthias Templ and colleagues that simulates a full synthetic population from a survey sample and census totals, developed with support from the World Bank and the IHSN.

    open sourceopen participation

uses this engine, platform or technique

  • ActivitySim tool draft

    Open-source Python software for activity-based travel models, run by a consortium of US metropolitan planning organisations and other transport agencies; it simulates where each person in a region goes, how and when, over a typical day.

    open sourceopen participation

alternative to

  • Open pipeline that builds a synthetic population of Île-de-France, or of other French regions, from public data: households, people and each person's day of activities and trips, ready for MATSim.

    open sourceopen dataopen participation

  • simPop tool draft

    R package by Matthias Templ and colleagues that simulates a full synthetic population from a survey sample and census totals, developed with support from the World Bank and the IHSN.

    open sourceopen participation

Tags: synthetic population, census, travel demand, activity-based model, Python

staging: drafts and proposals shown