Synthetic population workshop

Introduction

Sebastian Hörl

26 October 2023

IRT SystemX

Today's workshop

  • Population synthesis using the eqasim toolkit is gaining interest
    • Transport (obviously)
    • Energy
    • Epidemics
    • ...
       
  • Various institutions and developers / researchers working with it
    • Which components can be contributed?
    • How can we make that easier?
    • What is everybody's roadmap?
    • What are opportunities for collaboration?
       
  • (Today's focus is not the Java / transport simulation part!)

Users & Implementations

Users & Implementations

Contributions

Repository

Commits

Repository

Recent CHANGELOG

Major recent changes

  • Updated all input data to latest versions (INSEE 2019, ...)

Major recent changes

  • Updated all input data to latest versions (INSEE 2019, ...)
     
  • Integration of BD-TOPO buildings and BAN for home locations (Arthur)

Major recent changes

  • Updated all input data to latest versions (INSEE 2019, ...)
     
  • Integration of BD-TOPO buildings and BAN for home locations (Arthur)
     
  • Easier management of input files
    • Archives (zip, 7z, ...) stay packaged while reading
    • Automatic discovery of files in directories (BD-TOPO, GTFS, ...)

Contributing

  1. Make a fork & clone it
git clone git@github.com:user/ile-de-france.git

Contributing

  1. Make a fork & clone it
  2. Make a branch
git branch my_changes

Contributing

  1. Make a fork & clone it
  2. Make a branch
  3. Integrate your changes & commit & push
git commit -m "feat: new great feature"
git push origin my_changes

Contributing

  1. Make a fork & clone it
  2. Make a branch
  3. Integrate your changes & commit & push
  4. Send a Pull Request (PR) on Github

Contributing

  1. Make a fork & clone it
  2. Make a branch
  3. Integrate your changes & commit & push
  4. Send a Pull Request (PR) on Github
  5. Continuous testing will check the code

Contributing

  1. Make a fork & clone it
  2. Make a branch
  3. Integrate your changes & commit & push
  4. Send a Pull Request (PR) on Github
  5. Continuous testing will check the code
  6. Maintainers will review the changes before merging them in

Extensions

  • New functionality in pipeline: Aliasing
  • Allows to replace stages via configuration

Extensions

  • New functionality in pipeline: Aliasing
  • Allows to replace stages via configuration

Extensions

  • New functionality in pipeline: Aliasing
  • Allows to replace stages via configuration

Extensions

  • New functionality in pipeline: Aliasing
  • Allows to replace stages via configuration

Agenda

  • 10h30 - 12h00: Presentation of recent developments
     
  • 12h00 - 13h00: Lunch and exchange
     
  • 13h00 - 14h00: Presentation of recent developments
     
  • 14h00 - 15h00: Short presentation of research agendas
     
  • 15h00 - 16h00: Roadmap and discussion

Synthetic population workshop

IRT SystemX Roadmap

Specific developments

  • Contributing matching by unité urbaine
     
  • Flexible processing of GTFS data with different time frames (Tarek)
     
  • Automated configuration of the pipeline (using a boundary as a basis)
     
  • Distinction between synthesis-based trips (only origin and destination) and choice-based trips (mode, travel time, ...)

November 2023

November 2023

December 2023

Before end of 2024

Research topics

  • Benchmarking population synthesis
    • Unified implementation of approaches to compare performance
  • Population scenarios
    • Population growth, with different scenarios, ...
  • Location choice
    • Workplace: take into account CSP, ...
    • Secondary: shop surface, attraction, ...
  • Interfacing of the pipeline
    • With 4-step-models, other ABMs like SUMO, ...

Open Demand Project

  • Currently, large confusion between the two major components of eqasim
     

Demand synthesis

pipeline

Standardized MATSim

with DCM

vs

Open Demand Project

  • Currently, large confusion between the two major components of eqasim
     

Demand synthesis

pipeline

Standardized MATSim

with DCM

vs

  • We propose to rename the synthesis pipeline to
     

Open Demand Project

Open Demand Project

  • Currently, large confusion between the two major components of eqasim
     

Demand synthesis

pipeline

Standardized MATSim

with DCM

vs

  • We propose to rename the synthesis pipeline to
     

Open Demand Project

  • Initially, no major changes, just a new name
     

Open Demand Project

  • In the midterm restructuring of the project is planned
     
  • Currently, we have multiple individual cases with a lot of code duplication, not very modular

Open Demand Project

  • In the midterm restructuring of the project is planned
     
  • Step 1: Establish a common library of demand synthesis algorithms and wrappers around existing code and repositories (via dependencies)

Open Demand Project

  • In the midterm restructuring of the project is planned
     
  • Step 1: Establish a common library of demand synthesis algorithms and wrappers around existing code and repositories (via dependencies)
import opendemand as odm
df_weights = odm.ipf(df_persons, df_marginals)
df_matches = odm.statistical_matching(...)

Open Demand Project

  • In the midterm restructuring of the project is planned
     
  • Step 1: Establish a common library of demand synthesis algorithms and wrappers around existing code and repositories (via dependencies)
python3 -m odmp config_nantes.yml

Open Demand Project

  • In the midterm restructuring of the project is planned
     
  • Step 1: Establish a common library of demand synthesis algorithms and wrappers around existing code and repositories (via dependencies)
     
  • Step 2: Replace custom pipeline by established tools such as Snakemake

Open Demand Project

  • In the midterm restructuring of the project is planned
     
  • Step 1: Establish a common library of demand synthesis algorithms and wrappers around existing code and repositories (via dependencies)
     
  • Step 2: Replace custom pipeline by established tools such as Snakemake
rule step1:
    params:
        text="some text"
    output:
        "step1_output.txt"
    script:
        "step1.py"

rule step2:
    input:
        "step1_output.txt"
    output:
        "step2_output.txt"
    script:
        "step2.py"
snakemake pipeline.smk

Synthetic population workshop

By Sebastian Hörl

Synthetic population workshop

Synthetic Population Workshop, IRT SystemX, 26 October 2023

  • 180