Expand description
Hall-call destination dispatch algorithm. Hall-call destination dispatch (“DCS”).
Destination dispatch assigns each rider to a specific car at hall-call time (when their destination is first known) and the assignment is sticky — it never changes for the rider’s lifetime, and no other car will pick them up. The controller minimizes each rider’s own travel time, using a simple cost model:
J(C) = pickup_time(C, origin)
+ ride_time(origin, dest)
+ stop_penalty * new_stops_added(C, origin, dest)Assignments are recorded as an AssignedCar extension component on the
rider; the loading filter in [crate::systems::loading] consults this to
enforce the stickiness invariant.
This is a sim — not a faithful reproduction of any vendor’s controller.
Each assigned car’s DestinationQueue
is rebuilt every dispatch tick from the set of live sticky commitments
(waiting riders contribute origin + dest; riding riders contribute dest)
and arranged into a direction-aware two-run (plus fallback third-run)
monotone sequence so the car visits stops in sweep order rather than
in the order assignments arrived.
Structs§
- Assigned
Car - Sticky rider → car assignment produced by
DestinationDispatch. - Destination
Dispatch - Hall-call destination dispatch (DCS).
Constants§
- ASSIGNED_
CAR_ KEY - Typed extension key for
AssignedCarstorage.