Project Meeting 2022.05.03 - ActivitySim/activitysim GitHub Wiki

Admin/Action Items

  • Sijia/WSP to review vehicle choice model code pull request. Everything is done.
  • David/RSG and Sijia/WSP to review sharrow code pull request. Most is done. You can run a variety of things but documentation isn't complete and some tests are not working right now, but there is plenty to review.

CT-RAMP2s

Overview

  • Presentation: Ctramp2s Overview.pptx
  • Includes an ABM library for any model, where you have specific definitions for each model
    • Categories - such as workers, industry classifications for jobs, etc., in a csv file
    • Model utility methods
    • Model component sequencing
  • Namespace flexibility
    • Didn't create fixed objects anymore
    • New attributes class (enhanced HashMap)
    • Attributes available throughout model stream and you can have mixed types
  • Smarter data model
    • New matrix handling
    • Faster expression calculator
    • Used partitioning to solve ABM for smaller packets of households
  • Runtime improvements
    • Use of stream in Java, .parallel for those streams, automatic multithreaded processing

Questions/Additional Discussion

  • Transparency in modularity
    • Adding or dropping components from a spine that's largely intact
    • Three primary steps
      • Data preparation: preparing the values that are going to be needed to solve the components
      • Computation: solving the equations
      • Save the data: saving results to memory to be made available downstream
  • Handling matrices
    • Before, CTRAMP reads all the matrix values at one time, all defined in one place.
    • After (now), if you are dealing with a small sampled of households, it only reads in origin rows for those sampled households. This can increase runtime but significantly reduces memory. (256 GBs seemed to be sufficient, in WSP's experience.)
    • For intermediate stops, where the origin isn't the household home origin, that row of values wouldn't be in the partitioned memory. If the row is not available in memory, it reads the required data as needed.
  • Any lessons learned from previous refactoring efforts?
    • Issues with spreadsheet and Java.
    • With CT-RAMP2s, UECs need to be in Java syntax
    • Sharrow took a similar approach, needs to follow numba syntax to work with the numba/C compiler.