activitysim
activitysim copied to clipboard
Level-of-service Manager
Consolidating a number of LOS management features requests into this issue.
- Level-of-service Manager (https://github.com/ActivitySim/activitysim/issues/743)
- LOS Roster (https://github.com/ActivitySim/activitysim/issues/748)
- Reading Multiple OMX Skim Files (https://github.com/ActivitySim/activitysim/issues/721)
Level-of-service Manager
The level-of-service-manager software will have its own set of APIs for reading skims from disk, storing skims in memory, and delivering values from the skims to an ActivitySim model run request. As standalone software, developers will be able to make targeted improvements to how skims are stored and delivered, setting the stage for continuous improvement. The design of the software will anticipate massive parallelization in which numerous level-of-service managers are instantiated, reading in skims from a common storage location, and delivering skim values to numerous computing instances — though we anticipate this functionality will not be leveraged until the release of ActivitySim 2.0.
May also include Skims Memory Compression. With the refactoring of the level-of-service manager, skim values will be intelligently compressed to save memory resources. For example, if a matrix of transit transfers includes only values of 0, 1, 2, or 3, we do not need a zone by zone matrix of short-integers to store these values. Rather, we just need a dictionary pointing requesting zone pairs to the correct outcome, with the possible values only stored once in memory. This approach should further reduce the memory footprint of skims in ActivitySim.
LOS Roster
Implement Daysim like LOS roster
Reading Multiple OMX Skim Files
This feature means adding support for the user to be able to specify multiple skim files instead of one big skim file. Since network models typically write several separate skim files, this could make integration easier. This is similar to the DaySim roster and matrix page in the UECs.