Repository navigation
This release introduces several major new ActivitySim capabilities, including explicit error terms and additional alternative-sampling methods, park-and-ride lot choice with capacity constraints, and support for reading skims from Parquet files. It also includes performance improvements, expanded explicit chunking, and a variety of simulation, estimation, and reproducibility fixes.
Users upgrading existing models should review the breaking and behavior-changing items below.
💥 Breaking and Behavior-Changing Changes
-
Three-zone support has been removed. The legacy TAP/TVPB pathbuilder, three-zone configuration settings, and bundled three-zone examples are no longer included. See #1056 and #1072.
-
Core dependency requirements have changed. ActivitySim now requires NumPy 2.x, Pandera 0.30 or newer, and Sharrow 2.16 or newer.
-
Failed choices are now handled explicitly. By default, households with failed choices are skipped and reported. A run fails if more than 0.1% of households are skipped. These behaviors can be controlled with
skip_failed_choicesandfraction_of_failed_choices_allowed. See #1023 and #1063. -
Sharrow
fastmathnow defaults toFalseto avoid difficult-to-diagnose problems involving NaN or infinite values. It can still be enabled in a component'scompute_settings. -
SIMULATE_CHOOSER_COLUMNSandLOGSUM_CHOOSER_COLUMNSare deprecated. These settings are now ignored because unused columns are detected and dropped automatically. Users should remove them from model configurations. See #1094. -
Alternative files should use
alt, rather thanAlt, as their index name. The old spelling remains compatible but generates a deprecation warning. Sample-rate calculations are also no longer rounded, which may slightly change expansion factors and model results.
Highlights
-
Explicit error terms and new sampling methods: Choice models can draw explicit random utility terms, with configurable
inverse_cdf,eet, andpoissonalternative-sampling methods. See #1064. -
Park-and-ride modeling: A new park-and-ride lot choice component supports capacity constraints, multi-process execution, mode-choice logsums, Sharrow skim access, and park-and-ride trip-matrix output. See #1001 and #1113.
-
Parquet skims: Both legacy and Sharrow runs can now read dense or sparse skim data from Parquet files, including configurations that mix OMX and Parquet inputs. See #1101.
-
Performance improvements: Explicit chunking is now available for mode-choice and trip-scheduling components, and nearest-zone calculations for disaggregate accessibility have been substantially accelerated.
-
Improved Sharrow controls: Unused skims can be excluded when loading skim data, thread limits are managed more consistently, and a utility for clearing the Sharrow cache is included.
Important Fixes
This release also fixes several issues that may change individual model results:
- Trip scheduling now produces consistent results in single- and multiprocess runs.
- Closed work and school zones remain closed during simulation-based shadow pricing.
- School escorting uses stable sorting for reproducible results.
- CDAP estimation now constructs the interaction terms for three- and four-person households correctly. Users who previously estimated CDAP models should review the detailed migration note in the ActivitySim change log.
- Workplace-location logsums are no longer overwritten in estimation mode.
- Trace IDs are generated consistently.
- Global constants are available to interaction-based model expressions.
What's Changed
- update changelog in docs by @jpn-- in #1025
- Trip Scheduling Choice -- Same Results Single Process and Multi-Process by @dhensle in #1005
- Fix trace IDs so they have the same hash by @JoeJimFlood in #1021
- Repair CDAP estimation by @jpn-- in #1026
- Index names consistently set to "alt" for alternatives files by @dhensle in #1018
- Fix for zones reopening in simulation-based constraint mechanism for work/school location choice by @dhensle in #1028
- Fix Sphinx currentmodule directive for location choice documentation by @jpn-- with @Copilot in #1034
- sharrow thread limits and cache clear script by @jpn-- in #1032
- select correct branch for latest 1-zone example by @jpn-- in #1043
- update larch pin to 6.0.46 and all dependabot changes by @jpn-- in #1054
- Add global option to skip households on simulation failure by @i-am-sijia in #1023
- Added instructions for installing specific ActivitySim versions by @JoeJimFlood in #1055
- Lower default threshold for skipped failed choices to 0.1% by @i-am-sijia in #1063
- Remove Three Zone Code and Examples by @dhensle in #1056
- finish removing 3 zone by @jpn-- in #1072
- use all TAZs when using sharrow by @jpn-- in #1027
- Remove Sample Rate Rounding by @i-am-sijia in #1073
- Speed Up Nearest Zone Calculation in Disaggregate Accessibilities by @dhensle in #1031
- Add regression tests for nullable_nonnegative decode filter in write_tables by @jpn-- with @Copilot in #1087
- np.in1d -> np.isin by @jpn-- in #1093
- Explicit error terms production code by @janzill in #1064
- Support explicit_chunk for mode-choice components by @vincentgong7 in #1088
- post EET merge clean up by @janzill in #1098
- Workplace Location Logsum Overwritten in Estimation by @dhensle in #1077
- use new sample_method name by @janzill in #1100
- add trip scheduling choice explicit chunking by @jpn-- in #1102
- Stable sort for school escorting by @americalexander in #1085
- Deprecate SIMULATE_CHOOSER_COLUMNS and LOGSUM_CHOOSER_COLUMNS settings by @jpn-- with @Copilot in #1094
- Make global constants available to interaction-based model expressions by @jpn-- with @Copilot in #1095
- Support reading skims from Parquet files, in addition to OMX by @jpn-- in #1101
- Adding ignore list to skim load for unused skims while running with sharrow by @dhensle in #1036
- stop publishing to test.pypi by @jpn-- in #1109
- Park-and-ride lot choice and capacity by @dhensle in #1001
- Fix park-and-ride skim validation with Sharrow by @jpn-- in #1113
- update documentation for release by @janzill in #1114
New Contributors
- @vincentgong7 made their first contribution in #1088
- @americalexander made their first contribution in #1085
Full Changelog: v1.5.1...v1.6.0