ActivitySim / activitysim

An Open Platform for Activity-Based Travel Modeling
https://activitysim.github.io
BSD 3-Clause "New" or "Revised" License
194 stars 99 forks source link

Hard Coded Specification - Non-Mandatory Tour Types #281

Closed danielsclint closed 2 months ago

danielsclint commented 4 years ago

Within tour_frequency.py and joint_tour_destination.py, the non-mandatory tour types are hard-coded within the code.

While the ARC model does use the same tour types as MTC, they are implemented slightly differently. The ARC implementation shares the same tour mode choice coefficients across all non-mandatory tour types.

To get the ARC implementation to work, we had to duplicate the coefficients for each tour type. This is probably a good practice in the long-run, but its easy to imagine the hard-coded non-mandatory tour types being a constraining feature for other ABMs with different needs.

It looks like @toliwaga put some statements in the code to come back to this at some point. While we have a work around for ARC, this would be good to fix before moving a model into production.

The code could either interpret the non-mandatory tour types from the tour_frequency spec or tour_destination spec. Perhaps even better would to define it explicitly in the settings.yaml file and then check the specs all agree with the settings.yaml definition.

https://github.com/ActivitySim/activitysim/blob/7b57c94e12d27a23f86c8988117e885ae754c44e/activitysim/abm/models/util/tour_frequency.py#L46-L71

https://github.com/ActivitySim/activitysim/blob/7b57c94e12d27a23f86c8988117e885ae754c44e/activitysim/abm/models/joint_tour_destination.py#L37-L47

dhensle commented 2 months ago

Completed in #581