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.
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.