Skip to content

ENH: add trip scheduling choice explicit chunking#1041

Open
m-richards wants to merge 1 commit into
ActivitySim:mainfrom
m-richards:matt/trip_scheduling_choice_explicit_chunking
Open

ENH: add trip scheduling choice explicit chunking#1041
m-richards wants to merge 1 commit into
ActivitySim:mainfrom
m-richards:matt/trip_scheduling_choice_explicit_chunking

Conversation

@m-richards
Copy link
Copy Markdown

@m-richards m-richards commented Mar 10, 2026

Closes #1040

Based on discussion in #1040 - this model is still being used in the DTP activitysim implementation and with certain other tweaks on their activitysim fork, this step will out of memory on 128GB hardware.

This is pretty simple to wire up. I've added a basic test which shows the parameter is accepted (but it would also pass if I hadn't wired up chunk.adaptive_chunked_choosers, so it's not ideal)

I'm not quite sure what the testing philosophy is at the moment - I've read #1038 and the google doc, not exactly sure what's pragmatic with a small change like this - given there aren't a host of other tests testing for explicit chunking.

# check that tours with no inbound stops have zero inbound duration
assert out_tours[tsc.IB_DURATION].mask(in_tours[tsc.HAS_IB_STOPS], 0).sum() == 0

# confirm explicit chunking is supported and doesn't affect results
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can convert this to a parametrised test in the same way as test_agg_accessibility_orig_land_use, I'm not sure if that's preferred or not

@m-richards m-richards force-pushed the matt/trip_scheduling_choice_explicit_chunking branch from d26da46 to 9aec46f Compare April 13, 2026 02:32
@jpn-- jpn-- requested review from Copilot and jpn-- May 28, 2026 21:42
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR wires ActivitySim’s explicit chunking mechanism into the trip_scheduling_choice model step to reduce memory peaks (per #1040), and adds a regression test intended to confirm that explicit chunking is accepted and does not change results.

Changes:

  • Pass explicit_chunk_size=model_settings.explicit_chunk into chunk.adaptive_chunked_choosers within run_trip_scheduling_choice.
  • Add explicit_chunk to TripSchedulingChoiceSettings so it can be configured via YAML.
  • Add a unit test intended to validate chunking support and result stability.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
activitysim/abm/models/trip_scheduling_choice.py Plumbs explicit_chunk through to adaptive_chunked_choosers and exposes the setting via the component settings model.
activitysim/abm/test/test_misc/test_trip_scheduling_choice.py Adds a test asserting equality between unchunked and “explicit chunked” runs (but currently doesn’t actually exercise explicit chunking).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +290 to +308
# confirm explicit chunking is supported and doesn't affect results
model_settings_explicit_chunk = tsc.TripSchedulingChoiceSettings(
**{
"SPEC": "placeholder.csv",
"compute_settings": {
"protect_columns": ["origin", "destination", "schedule_id"]
},
}
)
out_tours_chunked = tsc.run_trip_scheduling_choice(
state,
model_spec,
tours,
skims,
locals_dict,
trace_label="PyTest Trip Scheduling",
model_settings=model_settings_explicit_chunk,
)
assert_frame_equal(out_tours, out_tours_chunked)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Trip scheduling choice doesn't support explicit chunking

2 participants