4
Designing an On-Line Ride-Sharing System Blerim Cici, Athina Markopoulou University of California, Irvine, USA {bcici, athina}@uci.edu Nikolaos Laoutaris Telefonica Research, Spain [email protected] ABSTRACT Ride-sharing systems have the potential to match travelers with similar itineraries and time schedules, and to bring significant ben- efits to individual users and the city as a whole. However, this is a challenging task, since users’ requests are not known in advance and they become available a few minutes before departure. In this paper, we design an online ride sharing system, where drivers and passengers send their requests for a ride in advance, possibly on a short notice. Our design is efficient and optimal. This is achieved by dividing the system into two components: the constraint satis- fier and the matching module. The constraint satisfier takes as input the spatio-temporal constraints of drivers and passengers and pro- vides feasible (driver, passenger) pairs in real time, and the match- ing module takes as input the feasible pairs and provides a maxi- mum cardinality matching of drivers and passengers. Our prelim- inary evaluation shows that the constraint satisfier can resolve the most expensive queries (matching of passenger to en-route drivers) in 2 seconds (on average), while the matching module can achieve a matching ratio of 78% when the offline upper-bound is 80%. Categories and Subject Descriptors H.2.8 [Database Management]: Database Application—data min- ing, spatial databases Keywords Online ride-sharing, Intelligent transportation systems 1. INTRODUCTION The car has been for some time one of most heavily used ground transportation vehicles, and in the US, it is the dominant one. Ac- cording to American Community Survey Reports currently there This work has been supported by NSF CDI award 1028394. Blerim Cici and Athina Markopoulou are affiliated with EECS, NetSys and CPCC at UC Irvine. Blerim Cici was visiting Telefon- ica Research Labs in Barcelona, Spain, when part of this work was conducted. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]. SIGSPATIAL’15, November 03-06, 2015, Bellevue, WA, USA Copyright 2015 ACM 978-1-4503-3967-4/15/11...$15.00 http://dx.doi.org/10.1145/2820783.2820850. are more than 130 million commuters, and almost 80 of them drive alone when commuting [1]. This has many negative consequences: pollution, traffic, high car expenses, and loss of productivity. Ride-sharing is a promising approach for reducing the number of vehicles on the streets in order to address both individual and city-wide issues. Ride-sharing refers to a mode of transportation in which individuals share a vehicle for a trip and split travel costs, and it combines the flexibility and speed of private cars with the reduced cost of shared public transportation. An anticipated breakthrough in ride-sharing is the ability to sat- isfy on-demand requests that do not require participants to schedule their trips in advance [2]. Such an online system will provide a par- ticipant the reassurance that they would still be serviced if their travel-needs change unexpectedly; when asked how far ahead of time participants would like to organize a shared ride, 43% desired organizing their ride 15-60 minutes before departure [3]. In this paper, we are interested in such an online ride-sharing system: requests arrive dynamically, possibly with a short notice, rides are on-recurrent basis, trajectories and times need to be up- dated as cars move, and the system has to find a matching (or de- clare that no ride exists) in real-time. We design and implement an online ride sharing system for matching users that could share a ride. Our goal is to provide rides to as many users as possible (or equivalently to minimize the total numbers of cars), while respect- ing users’ spatiotempotal constraints (e.g. to not incur excessive waiting, delay or detour). The system consists of two main components: (1) the constraint satisfier and (2) the matching module. The constraint satisfier takes as input the spatio-temporal constraints of drivers and passengers and provides feasible (driver, passenger) pairs. We design this mod- ule with scalability in mind. The matching module takes as input the feasible pairs (which form a bipartite graph between drivers and passengers) and responds to the users with their suggested ride. We formulate the problem as maximum cardinality matching, and we propose an optimal yet efficient algorithm for online matching (i.e. it finds the maximum cardinality matching, while performing efficient incremental updates upon arrival/expiration of requests). By decoupling the system into two components that interact only through the (dynamically updated) bipartite graph of feasible pairs, we build a system that is modular, easy to parallelize and to make online. We evaluate our system using home/work locations and trajecto- ries extracted from spatio-temporal datasets from the city of New York [4]. Our preliminary evaluation shows that the constraint satis- fier can resolve the most expensive queries (matching of passenger to en-route drivers) in 2 seconds (on average), while the match- ing module can achieve a matching ratio of 78% when the offline upper-bound is 80%

Designing an On-Line Ride-Sharing Systemodysseas.calit2.uci.edu/lib/exe/fetch.php/public:cici_sigspatial_2015.… · Designing an On-Line Ride-Sharing System Blerim Cici, Athina Markopoulou

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Designing an On-Line Ride-Sharing Systemodysseas.calit2.uci.edu/lib/exe/fetch.php/public:cici_sigspatial_2015.… · Designing an On-Line Ride-Sharing System Blerim Cici, Athina Markopoulou

Designing an On-Line Ride-Sharing System

Blerim Cici, Athina MarkopoulouUniversity of California, Irvine, USA{bcici, athina}@uci.edu

Nikolaos LaoutarisTelefonica Research, Spain

[email protected]

ABSTRACTRide-sharing systems have the potential to match travelers withsimilar itineraries and time schedules, and to bring significant ben-efits to individual users and the city as a whole. However, this isa challenging task, since users’ requests are not known in advanceand they become available a few minutes before departure. In thispaper, we design an online ride sharing system, where drivers andpassengers send their requests for a ride in advance, possibly on ashort notice. Our design is efficient and optimal. This is achievedby dividing the system into two components: the constraint satis-fier and the matching module. The constraint satisfier takes as inputthe spatio-temporal constraints of drivers and passengers and pro-vides feasible (driver, passenger) pairs in real time, and the match-ing module takes as input the feasible pairs and provides a maxi-mum cardinality matching of drivers and passengers. Our prelim-inary evaluation shows that the constraint satisfier can resolve themost expensive queries (matching of passenger to en-route drivers)in 2 seconds (on average), while the matching module can achievea matching ratio of 78% when the offline upper-bound is 80%.

Categories and Subject DescriptorsH.2.8 [Database Management]: Database Application—data min-ing, spatial databases

KeywordsOnline ride-sharing, Intelligent transportation systems

1. INTRODUCTIONThe car has been for some time one of most heavily used ground

transportation vehicles, and in the US, it is the dominant one. Ac-cording to American Community Survey Reports currently there

This work has been supported by NSF CDI award 1028394.Blerim Cici and Athina Markopoulou are affiliated with EECS,NetSys and CPCC at UC Irvine. Blerim Cici was visiting Telefon-ica Research Labs in Barcelona, Spain, when part of this work wasconducted.

Permission to make digital or hard copies of all or part of this work forpersonal or classroom use is granted without fee provided that copies are notmade or distributed for profit or commercial advantage and that copies bearthis notice and the full citation on the first page. Copyrights for componentsof this work owned by others than ACM must be honored. Abstracting withcredit is permitted. To copy otherwise, or republish, to post on servers or toredistribute to lists, requires prior specific permission and/or a fee. Requestpermissions from [email protected]’15, November 03-06, 2015, Bellevue, WA, USACopyright 2015 ACM 978-1-4503-3967-4/15/11...$15.00http://dx.doi.org/10.1145/2820783.2820850.

are more than 130 million commuters, and almost 80 of them drivealone when commuting [1]. This has many negative consequences:pollution, traffic, high car expenses, and loss of productivity.

Ride-sharing is a promising approach for reducing the numberof vehicles on the streets in order to address both individual andcity-wide issues. Ride-sharing refers to a mode of transportation inwhich individuals share a vehicle for a trip and split travel costs,and it combines the flexibility and speed of private cars with thereduced cost of shared public transportation.

An anticipated breakthrough in ride-sharing is the ability to sat-isfy on-demand requests that do not require participants to scheduletheir trips in advance [2]. Such an online system will provide a par-ticipant the reassurance that they would still be serviced if theirtravel-needs change unexpectedly; when asked how far ahead oftime participants would like to organize a shared ride, 43% desiredorganizing their ride 15-60 minutes before departure [3].

In this paper, we are interested in such an online ride-sharingsystem: requests arrive dynamically, possibly with a short notice,rides are on-recurrent basis, trajectories and times need to be up-dated as cars move, and the system has to find a matching (or de-clare that no ride exists) in real-time. We design and implement anonline ride sharing system for matching users that could share aride. Our goal is to provide rides to as many users as possible (orequivalently to minimize the total numbers of cars), while respect-ing users’ spatiotempotal constraints (e.g. to not incur excessivewaiting, delay or detour).

The system consists of two main components: (1) the constraintsatisfier and (2) the matching module. The constraint satisfier takesas input the spatio-temporal constraints of drivers and passengersand provides feasible (driver, passenger) pairs. We design this mod-ule with scalability in mind. The matching module takes as inputthe feasible pairs (which form a bipartite graph between driversand passengers) and responds to the users with their suggested ride.We formulate the problem as maximum cardinality matching, andwe propose an optimal yet efficient algorithm for online matching(i.e. it finds the maximum cardinality matching, while performingefficient incremental updates upon arrival/expiration of requests).By decoupling the system into two components that interact onlythrough the (dynamically updated) bipartite graph of feasible pairs,we build a system that is modular, easy to parallelize and to makeonline.

We evaluate our system using home/work locations and trajecto-ries extracted from spatio-temporal datasets from the city of NewYork [4]. Our preliminary evaluation shows that the constraint satis-fier can resolve the most expensive queries (matching of passengerto en-route drivers) in 2 seconds (on average), while the match-ing module can achieve a matching ratio of 78% when the offlineupper-bound is 80%

Page 2: Designing an On-Line Ride-Sharing Systemodysseas.calit2.uci.edu/lib/exe/fetch.php/public:cici_sigspatial_2015.… · Designing an On-Line Ride-Sharing System Blerim Cici, Athina Markopoulou

2. RELATED WORKThis section summarizes the most relevant work in the area of

ride-sharing and in related areas.Commercial Ride-Sharing. Ride-sharing is an important part of

the sharing economy and provides economical, societal and envi-ronmental benefits by utilizing “empty” car seats. Relevant ride-sharing startups include Zimride and Scoop [5], whose focus, how-ever, is to facilitate ride-sharing between employees of large corpo-rations. This makes the problem less challenging than in the gen-eral case (and is thus a popular strategy for bootstrapping carpool-ing [6]), since users have the same destination (the company theyall work for) and the system considers only the home locations ofdrivers and passengers, thus reducing the number of potential pairs.Their algorithms are proprietary and the problem they address is aspecial case of the framework developed in this paper.

Academic Research provides valuable insights into ride-sharing,primarily through surveys on ride-sharing optimization [7] and smallscale ride-sharing demos [3]. The work in [3] reports how far in ad-vance ride-sharing participants want to schedule their trips. Otherstudies characterized the behavior of carpoolers [8], identified theindividuals who are most likely to carpool and explained what arethe main factors that affect their decision [9]. Prior work quantifiedthe potential of ride-sharing [6, 4] using offline analysis of datasets.For example, in our prior work [4], we evaluated the potential ofcarpooling considering end-point and en-route ride-sharing, and us-ing mobile datasets from four cities to extract home and work lo-cations. Excellent surveys on the formulation and optimization ofride-sharing and on the key computational challenges include [7]and [2]. The focus of this paper is online ride-sharing (as opposedto offline analysis of its potential) and system design.

3. SYSTEM OVERVIEW

3.1 System RequirementsWe define ride-sharing as a one-time trip shared between a sin-

gle driver and a single passenger, according to spatiotemporal con-straints that both parties specify. Drivers and passengers submittheir requests before their desired departure time; this ahead-of-time notification can be, for example, a few minutes before depar-ture or the evening before the trip, and in general a parameter thataffects performance. When ride requests are submitted, a searchfor potential matches takes place in real time. If a suitable matchis found, the participants are notified immediately. An overview ofthe system is shown on Fig.1.

3.2 Driver and Passenger RequestsLet S denote the set of all users, D denote the set of drivers and

P denote the set of passengers. Clearly D ⊆ S, P ⊆ S and D ∪P = S. A location is described with its coordinates (lat, long).

For every passenger p ∈ P , the request entered in the systemconsists of the following information, also depicted on Fig.2:• Source location: coordinates (lat

(h)p , lng

(h)p ).

• Earliest departure time: p is ready to leave at t(h)p .• Destination location: coordinates (lat

(w)p , lng

(w)p ) .

• Latest arrival time: t(w)p is the latest acceptable time to arrive at

the destination. Based on that, we can compute the latest departuretime t′(h)p , i.e. the latest time she can leave from the source loca-tion in order not to be late; we refer to ∆t2 = t′

(h)p − t(h)p as the

delay tolerance of the passenger.•Request time: t(r)p is the time when the passenger sends its requestto the system, and It must be before the desired departure time. We

Figure 2: Request by passenger p: The vertical axis represents space(source and destination locations), the horizontal axis represents timeand the dashed lines are example trajectories. At t(r)p the passengersends his request in the system. The passenger is ready to leave fromthe source location at t(h)p and wants to arrive at the destination byt(w)p ; t′(h)p is the latest time the passenger can leave and not to late. We

refer to ∆t1 = t(h)p − t

(r)p as ahead-of-time notification and ∆t2 =

t′(h)p − t(h)p as delay tolerance (how much can p wait to be picked up).

refer to ∆t1 = t(h)p − t(r)p ≥ 0 as ahead-of-time notification.

For every driver d ∈ D, the request entered in the system con-sists of the following information, also depicted on Fig. 3:• Trajectory: The driver provides the source and destination loca-tions. The system computes the route, i.e. a set of nd points de-noted as Rd = {(lat(0)d , lng

(0)d ), ..., (lat

(nd)d , lng

(nd)d )}, the first

of which is the source and the last is the destination1. The sys-tem also predicts the time when the driver will be at each point.Eventually, the system stores (and updates, in the case of error) thetrajectory of each driver:Td = {(lat(0)d , lng

(0)d , t

(0)d ), ..., (lat

(nd)d , lng

(nd)d , t

(nd)d )}.

• Departure time: t(0)d . This is the time the driver intends to leave.Unlike passengers, drivers do not delay their departure time andthus do not need to specify delay tolerance.• distance tolerance δ: this is the maximum distance that the driveris willing to deviate from his trajectory to pickup/dropoff the pas-senger, as depicted in Fig. 3.• Request time: t(r)d the time when the driver’s request was sent tothe system, and it must be before the departure time; ahead-of-timenotification is defined similarly.

3.3 Driver and Passenger ConstraintsRide-sharing needs to be convenient for both the driver and the

passenger: they shouldn’t deviate too much from their routine andthey shouldn’t experience excessive delay or inconvenience.

Let us consider a given driver-passenger pair, d and p, depictedon Fig. 3. We assume that the driver does not change trajectory ordeparture time; however, he is willing to do a small detour to pickupdrop off the passenger, as long as that detour does not exceed hisdistance tolerance δ. Let i be the pickup (i.e. closest point of d’strajectory to the home of p), and j be the dropoff (i.e. closest pointof d’s trajectory to the work of p) location, and i < j. The passen-ger conveniently gets a ride, picked up at his source (e.g. home H)and dropped off at his destination (e.g. work W ) location. In ex-change, he may have to wait and delay his departure up to his latestdeparture time t′(h)p in order to arrive by the latest arrival time t(w)

p .Let delayH(p, d, i) and delayW (p, d, j) be the pick-up and drop-off delays respectively. A pair (d, p) ∈ E is feasible if both the

1The driver needs only to provide the source and destination andthe system will present a list of available paths, e.g. obtained usingGoogle Maps, and will ask her to choose one.

Page 3: Designing an On-Line Ride-Sharing Systemodysseas.calit2.uci.edu/lib/exe/fetch.php/public:cici_sigspatial_2015.… · Designing an On-Line Ride-Sharing System Blerim Cici, Athina Markopoulou

Figure 1: Online Ride-Sharing System Overview. Drivers and passengers enter their requests. The "constraint satisfier module”finds candidate pairs and builds a bipartite graph. The matching module takes the bipartite graph as an input, produces a matching.Finally, drivers and passengers are notified.

Std(0)

td(3)

td(4)

td(1)

H D

d

p

td(2)

td(5) td(6)

td(7) tp(h)

Wtp(w)

Figure 3: Example of Spatio-Temporal constraints when matching apassenger p with a driver d. The passenger p leaves from her sourcelocation (home H) and is going to a destination (work W ). The driverhas a fixed trajectory and departure time. However, the driver con-siders deviating at different points on his trajectory and do a detour(indicated in dashed line) to pickup and droppoff the passenger, aslong as these detour distances do not exceed his distance tolerance: i.e.,distH(p, d, i) ≤ δ and distW (p, d, j) ≤ δ. In exchange, the passengermay wait until his latest departure time.

passenger and driver constraints are satisfied, i.e.:

w(d, p) =

1, if t

(h)p > t

(i)d + delayH(p, d, j)

and t(w)p < t

(j)d + delayW (p, d, j)

and max(distH(p, d, i), distW (p, d, j)) < δ0, otherwise

A core challenge in ride sharing is to find feasible passenger-driver pairs and points for pick-up drop-off on the driver’s trajec-tory, that meet all constraints. The response to such search queriesmust be fast, for the ride-sharing system to be real-time and scalewith the number of users.

3.4 System ArchitectureFig. 1 shows an overview of the architecture of the system, which

consists of two main components. The first component is the con-straint satisfier that takes as input the passengers and drivers’ re-quests and produces feasible passenger-driver pairs, which can besummarized in the bipartite graph, shown in the middle of Fig. 1.The second component is the matching module that takes as inputthe bipartite graph of feasible pairs and finds a maximum cardinal-ity matching (as described in Section 5).

An important aspect of our system is that it is online: requestsarrive dynamically (at times t(r)d , t

(r)r , respectively) and also can

expire (when a driver arrives at the destination t(nd)d , or after the

latest departure time of a passenger t′p(h)). When arrival/expirationevents happen, the two modules need to do incremental updates.More specifically, the first module needs to update the records inthe database (driver’s trajectory points and passengers’ source, des-tination and constraints) and the bipartite graph of feasible pairsThe second module needs to update the matching solution, basedon the changes in the bipartite graph.

4. CONSTRAINT SATISFIERThis component of the online ride-sharing system receives the

queries from the drivers and the passengers, and will generate thefeasible matching combinations, i.e. for every passenger, it willgenerate the set of drivers who meet her spatio-temporal constraints.

Choosing MongoDB. The speed and scalability are our primaryconcerns, and we do not require complex join queries that tra-ditional -databases offer. We considered different options for theconstraint-satisfier and we decided to implement it using a NoSQLdatabase. More specifically, we choose MongoDB [10], which isvery popular in the industry (e.g. used by Foursquare [11]). Wechoose MongoDB due to its support for spatial data. More specifi-cally, MongoDB offers the following:• Spatial Indexing: MongoDB offers supports for queries that cal-culate geometries on an earth-like sphere, through the 2dsphere in-dex – a grid based geohashing scheme – [12].• Fast data Insertion: MongoDB is designed for fast insertion speed;it employs the cache of the operating system, which significantlyreduces write costs. Fast insertion of data is very important for areal-time system, since while data are being inserted in the database,the process that is doing the insertion will lock the data – via a writelock – and during that time no other process can read or write any-thing. This means that one cannot take advantage of parallelizationof insertion queries (which can be easily done for read queries, be-cause they use a read-lock that allows other processes to read fromthe dataset).

Implementation details: In order to take advantage of the 2dsphereand the proximity queries that come with it, we build and storeour data in such a way that all <latitude, longitude> points – bothfor coordinates that represent source/destination points and coordi-nates that represent points in a route.• Home/Work Collections: We store the data of the passengers intwo collections: 1) Home collection for the source points, and 2)Work collection for the destination points.• Trajectory Collection: We store the trajectory points of the driverin a different Trajectory collection. Each trajectory point is an indi-vidual entry in the collection, indexed by the id of the user and itsposition in the trajectory (e.g. first, second, third, ..., or last point).• Spatio-temporal queries: When we query one of the collections(either a diver seeking for passengers using the Home and Workcollections, or a passenger seeking for drivers using the Trajectory

Page 4: Designing an On-Line Ride-Sharing Systemodysseas.calit2.uci.edu/lib/exe/fetch.php/public:cici_sigspatial_2015.… · Designing an On-Line Ride-Sharing System Blerim Cici, Athina Markopoulou

(a) Home/Works in NY (b) Route Points in NY

Figure 4: Home/Work locations and route points for NY.

collection), we combine the spatial and the temporal range queriesvia the $near operator), using the $and operator.

5. MATCHING DRIVERS-PASSENGERSIn this section, we focus on the matching module in Fig.1. This

takes as input the bipartite graph of feasible driver-passenger pairsand provides a matching.

Maximum Cardinality Matching (MCM.) Consider the bipartitegraph of feasible pairs: G = (D ∪ P,E) where E = {(d, p) : d ∈D, p ∈ P s.t. that the constraints of d, p as defined in Section 3.3are satisfied. Finding the Maximum Cardinality Matching (MCM)on this bipartite graph is a classic problem that can be solved effi-ciently (in O(min(|D|, |P |) · |E|) time) and optimally using aug-menting paths [13]. 2

This classic (Ford-Fulkerson) algorithm lends itself naturally toan online version that can handle arrivals and departures of re-quests. Indeed, arrival of driver/passenger requests lead to edgesappearing/disappearing from the bipartite graph, which can be behandled by efficient incremental updates. Indeed, every time a re-quest arrives, this results in one or more edges appearing in the bi-partite graph. All we need to do is to find an augmenting path in thenew auxiliary graph and update the existing matching (in O(|E|)),as opposed to solving the problem from scratch.

6. PRELIMINARY RESULTS

City NYUsers 61K

Inter-point distance 100mAverage distance 16.1 kmMedian distance 8.0 km

Average gps pointsper trajectory 78.8

Table 1: Data set summary

In order to assess the performance of our on-line ride-sharingalgorithm using real data, we used datasets that provide the homeand work locations, as well as trajectories, of a large number ofusers in metropolitan areas. The data are summarized in Tab. 1 andwas obtained from [4].• Constraint Satisfier: We add all the users – their trajectories andtheir home/work locations – in MongoDB database (version 2.6.7).2The algorithm solves a max flow problem between a super sourceand super receiver node and the bipartite graph in the middle withunit capacities. An auxiliary graph is used to store and search foraugmented paths; when BFS on the auxiliary graph cannot findaugmenting paths, a max-flow is found on the original graph. Themax-flow solution then corresponds to a matching (using only theedges with flow 1).

Then we measure the average query speed for the most expen-sive operation, i.e. queries to the Trajectory collection – passen-gers looking for drivers. Our results indicate that the average queryspeed is around 2 seconds. Assuming a 32 parallel processes, thenwe can answer 16 queries per second and we would need an hourand 5 minutes for all the users in our database (assuming theirqueries arrived in our system uniformly at random).•Matching Algorithm: To evaluate the matching algorithm we do adiscrete time simulation where all the events appear in a simulatedtimeline based on the order of their arrival. Assuming an ahead oftime notification of 20 minutes, our algorithm has a matching rationof 78% when the offline upper bound is 80%.

7. CONCLUSION AND FUTURE WORKRide-sharing has a great potential for reducing the number of

cars in the streets of a city according to recent studies [4]. In thispaper, we designed an online ride-sharing system. In future work,we plan to do a thorough and in depth evaluation of our system. Wewill explore better the relationship between dataset size and speedquery speed for the constraint satisfier, and we will show how ourmatching algorithm is doing when compare to a greedy heuristics.Finally, we plan to explore how to speed up queries, e.g. by havingsparser trajectories, and how does that affect the performance of thealgorithm.

8. REFERENCES[1] B. McKenzie and M. Rapino, “Commuting in the united

states: 2009.” American Community Survey Reports, 2009.[2] “Ridesharing: The state-of-the-art and future directions,”

Transportation Research Part B: Methodological, vol. 57,no. 0, pp. 28 – 46, 2013.

[3] H. S., “Implementing Real-Time Ridesharing in the SanFrancisco Bay Area. ,” Master’s thesis, MinetaTransportation Institute, San Jose State University, CA,USA, 2010.

[4] B. Cici, A. Markopoulou, E. Frias-Martinez, andN. Laoutaris, “Assessing the Potential of Ride-Sharing UsingMobile and Social Data: A Tale of Four Cities,” in Proc. ofUbiComp, 2014.

[5] “Scoop.” https://www.takescoop.com/.[6] A. M. Amey, “Real-Time Ridesharing: Exploring the

Opportunities and Challenges of Designing aTechnology-based Rideshare Trial for the MIT Community,”Master’s thesis, Massachusetts Institute of Technology, 2010.

[7] “Optimization for dynamic ride-sharing: A review,”European Journal of Operational Research, vol. 223, no. 2,pp. 295 – 303, 2012.

[8] R. Teal, “Carpooling: Who, how and why,” TransportationResearch, vol. 21A, no. 3, pp. 203–214, 1987.

[9] K. D., “Carpooling: Status and potential.” Final Report U.S.Department of Transportation, DOT-TSC-OST-75-23, 1975.

[10] “Mongodb.” http://www.mongodb.org/.[11] “Scaling mongodb at foursquare.”

http://www.10gen.com/presentations/mongonyc-2012-scaling-mongodb-foursquare.

[12] “Geospatial indexes in mongodb.”http://docs.mongodb.org/manual/core/geospatial-indexes/.

[13] C. H. Papadimitriou and K. Steiglitz, “Algorithms formatching,” in Combinatorial Optimization, Algorithms andComplexity, ch. 10, pp. 221–226, 1998.