Software Architecture - ActivitySim/activitysim GitHub Wiki

Software Architecture

The overall architecture for the platform is influenced heavily by the design of the activity-based travel models used by the partners who are collaborating to sponsor this project and who will be its initial users and collaborators. Synthicity designed and partially implemented the architecture of the new platform in Phase 1, and all of the activity for this development effort is collaborative and visible on this GitHub project.

The architecture follows the UrbanSim architecture. The architecture for the ABM platform shares considerable core functionality with UrbanSim, such as Multinomial Logit Models, Nested Logit Models, Regression Models, and other models such as Cross-Classification, as needed.

For task 1b of the contract with AMPORF, in addition to the software architecture of UrbanSim documented here, four deliverable items were requested:

  • Overview of the necessary framework changes needed to address any foreseen use cases that cannot be adequately addressed with the existing UrbanSim framework and architecture.

The main changes needed to support the implementation of activitysim are the addition of 3-level nested logit models (UrbanSim currently has 2-level NL models implemented), and new data structures required for the travel models.

  • Explicit description of the methods (and location of those methods) Synthicity plans to use to streamline the existing ABM frameworks to improve stability and performance.

Vectorization of for loops is a core methodology used, and this is woven into the models throughout. In addition, the use of Synthicity's accessibility engine - pandanas - using contraction heirarchies (in C, with a Python interface), will add substantial speedups to the computation of routes and accessibilities on networks, as well as more general localized accessibility and 'walkscore' types of calculations used to create variables.

  • Description of the types of methods in the existing travel models that need to be reformulated to meet the goals of this contract.

None anticipated at this point. Synthicity expects that the most complex aspect of the ABM system is the modeling of joint tours. Synthicity recommends, following Billy's comments on taking this approach with the ABM implementation at PSRC, to implement the remainder of the model system first, ensure it is working well in that configuration, and then assess this component.

  • Epics that lay out the general components of model development that will be needed to meet the goals of this contract. This may seem to overlap with the deliverables of Task 1d, but the Partners feel as though the Epics will provide a general framework to develop user stories of which define the project backlog.

These are in the Roadmap page on this project wiki.

More Information

Additional information about the ActivitySim software architecture, including a detailed illustration of the included example is on our website.