Skip to content

v1.6.0

Latest

Choose a tag to compare

@janzill janzill released this 17 Sep 02:51
· 3 commits to main since this release
8ca6741

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_choices and fraction_of_failed_choices_allowed. See #1023 and #1063.

  • Sharrow fastmath now defaults to False to avoid difficult-to-diagnose problems involving NaN or infinite values. It can still be enabled in a component's compute_settings.

  • SIMULATE_CHOOSER_COLUMNS and LOGSUM_CHOOSER_COLUMNS are 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 than Alt, 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, and poisson alternative-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

Full Changelog: v1.5.1...v1.6.0