Input
Start from the input template, or drop a standard team export as-is.
Required columns: Team Number and Zip Code for teams; Event Name, Zip Code and Capacity for events.
Optional team columns: District, Pinned Event, Host Event. Any other team columns (city, coach, notes…) are copied to the results unchanged.
Assignment order
- Host and pinned teams go to their event.
- District teams (Districts sheet, up to 5 events per district) are split evenly across their district's events, each team at the closer one where possible.
Districts with more teams go first. Teams that don't fit are flagged district overflow and placed with everyone else.
- Everyone else is placed by an optimizer (HiGHS) that finds the best overall plan, not just a team-by-team guess. It minimizes total drive time, with extra weight on trips over the long-trip threshold.
It also tries to keep teams from the same zip together and fill every event to the minimum fill %.
Fair tie-breaking
When options are equally good, the winner is chosen randomly, never by team number. Each run shows its random seed. Enter that seed under Settings to repeat a run exactly.
Drive times
Road drive times between every pair of Washington zip codes were precomputed from OpenStreetMap, measured from where people live in each zip code.
Ferry routes are included unless turned off in Settings.
Review flags
- long_distance / district_far: drive over the mile or minute limit, or nearest event is far away.
- underfilled: the team's event is below the minimum fill %.
- zip_split: teams from this zip went to different events.
- small_zip / large_zip: few or many teams in the zip.
- unassigned, invalid_zip, district_overflow, unknown_district, invalid_pin, placeholder_name, estimated_distance.