Taxi Ridesharing

Taxi ridesharing can be of significant social and environmental benefit, e.g. by saving energy consumption and satisfying people’s commute needs. Despite the great potential, taxi ridesharing, especially with dynamic queries, is not well studied. In this paper, we formally define the dynamic ridesharing problem and propose a large-scale taxi ridesharing service. It efficiently serves real-time requests sent by taxi users and generates ridesharing schedules that reduce the total travel distance significantly. In our method, we first propose a taxi searching algorithm using a spatio-temporal index to quickly retrieve candidate taxis that are likely to satisfy a user query. A scheduling algorithm is then proposed. It checks each candidate taxi and inserts the query’s trip into the schedule of the taxi which satisfies the query with minimum additional incurred travel distance. To tackle the heavy computational load, a lazy shortest path calculation strategy is devised to speed up the scheduling algorithm. We evaluated our service using a GPS trajectory dataset generated by over 33,000 taxis during a period of 3 months. By learning the spatio-temporal distributions of real user queries from this dataset, we built an experimental platform that simulates user real behaviours in taking a taxi. Tested on this platform with extensive experiments, our approach demonstrated its efficiency, effectiveness, and scalability. For example, our proposed service serves 25% additional taxi users while saving 13% travel distance compared with no-ridesharing (when the ratio of the number of queries to that of taxis is 6).

Taxi Query Generator [ (for first time users)] [config file] [User Manual] [Java JAR File]


Demo Video
Request Tab: A red person symbol means a requests that is assigned to a taxi, a blue one means a new request to be assigned.
Taxi Tab: Green lines mean roads ahead, red lines mean passed roads. A person symbol with a "+" sign means a scheduled pickup and with a "-" sign means a scheduled drop-off.