Project Meeting 2022.05.10 - ActivitySim/activitysim GitHub Wiki
Agenda
Discuss a presented Straw Man for an ActivitySim 2.0
Key Decisions, Action Items/Next Steps
A major refactoring process is not recommended at this time. Maybe after a few years of ActivitySim being deployed and applied in various contexts will help drive consensus on what is working and not working, to better identify the most stable, tested version of the model(s), and then potentially go through a redesign effort.
Develop a Phase 8+ road map that will guide ActivitySim efforts over the next X-X years.
Develop a matrix of model features/components for current partners.
Inventory what is working and not working from developers and partners.
Straw Man 2.0
Codebase
All new ActivitySim codebase, with no promise of backwards compatibility
Stateless operation - every input is explicitly passed to every component
Immutable PyArrow and Xarray data structures
Rigorous unit testing, not just integration testing
Curated Example Models
One (or very few) canonical "Generic" model (drop the "MTC" moniker) that enables feature under the sun
One "Intro" model that includes the minimal set of pieces that the smallest, least sophisticated ABM user could find useful
One maintenance model per consortium member who chooses to submit one.
Concerns about the Straw Man approach
Partners have spent a lot of time and money to get to this point and still don't have a version in application.
Waiting another X years for a 2.0 version seems like too much additional time.
Desire to utilize the work done to date.
Further Discussion
What is the current state of all the implementations/development efforts?
Action Item: inventory the state of all the models during in development/application.
What is Working
Many agencies have already started a transition to this new codebase.
Building a common, "rock solid" base that is well documented.
What is not Working
Memory usage is very high
Not actually that easy to implement an ActivitySim model in a new place
End user "usability" and ability to see what's going on inside the model
Chunking
The relationship between upstream and downstream components
Certain components (esp. trip location choice) are so slow
Legibility of the code, organization issues
In practice, developing a model for implementation is like trying to hit a moving target, difficult when things are constantly in development.
Error reporting
Modularity
Try to find a balance between modularity and clarity so that wehn there is a need to modify/insert/delete pieces, it doesn't break the model.
Model design/flow considerations as well as software considerations are required.
Is refactoring/redesign necessary?
Focus on use cases. For example, not many agencies need to move to the cloud, Should this be a priority at this time if user's aren't likely to need to utilize all the benefits of refactoring.
ActivitySim models haven't been thoroughly tested and put into production yet. We may not have a good sense of what does or doesn't work yet. For example, do we really have a good grasp on two-zone vs three-zone vs one-zone, and what are the costs and benefits? It might be worth resolving these questions before a major redesign effort that might account for features that may not be used in a few years.
Focus on principles for building ActivitySim.
It wasn’t the intention to build the most sophisticated model.
Wanted to be rock solid, reliable, thoroughly tested model where users can learn from and utilize developments/work from others.