Method and system for estimating time of arrival of driver at location

By dividing the search area into multiple cells and estimating the number and location relative distances of the provider devices in real time, the problems of high computing costs and low estimation accuracy in the prior art are solved, and efficient and accurate driver arrival time estimation is achieved.

CN119816883APending Publication Date: 2025-04-11GRABTAXI HOLDINGS PTE LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380063753.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-09-05
Filing Date
2023-08-28
Publication Date
2025-04-11

AI Technical Summary

Technical Problem

The prior art, when estimating the driver's arrival time, has high computational costs and high storage consumption, and the estimated arrival time may be underestimated, resulting in passengers' waiting time being cancelled.

Method used

Stream aggregation and index-based ETA cache are employed to reduce computation and storage costs by dividing the search area into cells and estimating driver arrival time in real time based on the number of provider devices and relative location distances.

Benefits of technology

It significantly reduces the calculation cost of arrival time estimates, saves up to 80% of calculation costs and 62.5% of storage space, while improving the accuracy of estimates and reducing the risk of passengers waiting time too long.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119816883A_ABST
    Figure CN119816883A_ABST
Patent Text Reader

Abstract

The present disclosure provides methods and systems for estimating a time of arrival of a driver at a location. In some examples, a method is provided that includes defining, by a server, a search area divided into a plurality of cells, the search area having a location as a center point of the search area, the location indicated in a request for a driver from a requester device, the requester device being a computing device associated with a user; determining, by the server, a number of provider devices located in each of the plurality of cells based on the location of each of the plurality of provider devices, each provider device being a computing device associated with a driver located within the search area; and estimating, by the server in real-time and in response to a request for the driver, a time of arrival of the driver at the location based on the relative distance between the location and the plurality of cells according to the determined number of provider devices.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates broadly, but not exclusively, to methods and systems for estimating an arrival time of a driver at a location. Background Art

[0002] Ride-hailing or delivery platforms typically use an Estimated Time of Arrival (ETA) to determine how soon a driver can be assigned after receiving a booking from a user, and then how soon they can pick up the user. In the delivery scenario, the ETA is included on the order listing page as part of the total estimated delivery time from assignment to pickup and then delivery to the eater's location, e.g. Figure 3 As shown in the figure numerals 302 and 304 in the diagram 300 of . The figure shows the user an estimate of the traffic conditions near the pickup location and the supply of surrounding drivers in the advance booking stage.

[0003] A typical solution to estimate the arrival time is to first find a list of available drivers nearby, and then calculate the estimated arrival time from each driver's current location to the pickup location, and finally return the shortest time as the result. However, this solution is computationally expensive because it requires 1) storage for real-time driver location updates and K-nearest neighbor searches and 2) a map engine and cache layer to calculate point-to-point ETA. Both requirements utilize a spatial index within a search radius (typically 5 kilometers). The spatial index needs to handle high QPS, which requires fast and frequent access, making existing solutions (like R-trees) not ideal.

[0004] Furthermore, indexing based on space-filling curves requires encoding the identifier, which requires at least 8 bytes for each origin or destination for various combinations of point-to-point ETA caches, resulting in high storage consumption. In addition, the estimated minimum time may be underestimated, which may lead to passenger cancellations due to long waiting times for the driver. Another solution is to use static values ​​as part of the merchant's commitment, but it does not reflect the dynamic nature of driver supply in the market.

[0005] Therefore, there is a need to provide methods and systems that seek to overcome or at least minimize the above mentioned challenges. Summary of the invention

[0006] According to a first aspect of the present disclosure, a method for estimating an arrival time of a driver at a location is provided, the method comprising: defining, by a server, a search area divided into a plurality of cells, the search area having a location as a center point of the search area, the location being indicated in a request to the driver from a requesting device, the requesting device being a computing device associated with a user; determining, by the server, the number of provider devices located in each of a plurality of cells based on the location of each of a plurality of provider devices, each provider device being a computing device associated with a driver located within the search area; and estimating, by the server in real time and in response to the request to the driver, the arrival time of the driver at the location based on the relative distances between the location and the plurality of cells according to the determined number of provider devices.

[0007] According to a second aspect of the present disclosure, a system for estimating an arrival time of a driver at a location is provided, comprising: at least one processor; and at least one memory, comprising computer program code; the at least one memory and the computer program code are configured to, together with the at least one processor, enable the system to at least: define a search area divided into a plurality of cells, the search area having a location as a center point of the search area, the location being indicated in a request to the driver from a requesting device, the requesting device being a computing device associated with a user; determine the number of provider devices located in each of a plurality of cells based on the location of each of a plurality of provider devices, each provider device being a computing device associated with a driver located within the search area; and estimate the arrival time of the driver at the location in real time and in response to the request to the driver, based on the determined number of provider devices and based on the relative distances between the location and the plurality of cells. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] The embodiments and implementations are provided by way of example only and will be better understood and readily apparent to one of ordinary skill in the art from the following written description read in conjunction with the accompanying drawings, in which:

[0009] Figure 1 A system for estimating an arrival time of a driver at a location according to various embodiments of the present disclosure is shown.

[0010] Figure 2 is a schematic diagram of an estimation server according to various embodiments of the present disclosure.

[0011] Figure 3 Depicted is a diagram of how an estimated time of arrival (ETA) may be displayed to a user via an interface of a platform, according to an example.

[0012] Figure 4An overview of a system for estimating a driver's arrival time at a location is shown in accordance with various implementations.

[0013] Figure 5 An exemplary algorithm for breadth-first search is shown in accordance with various implementations.

[0014] Fig. 6A A search area in a grid format is shown according to various embodiments.

[0015] Figure 6B The search area is shown in a circular format according to various embodiments.

[0016] Figure 7 An exemplary flow chart for estimating a driver's arrival time at a location is shown in accordance with various implementations.

[0017] Fig. 8A It can be practiced on Figure 2 A schematic block diagram of a general computer system of an estimation server.

[0018] Figure 8B It can be practiced on Figure 1 Schematic block diagram of a general purpose computer system of a combined transaction processing and estimation server.

[0019] Fig. 9 Shown is a method for implementing Figure 1 An example of a computing device of a transaction processing server is shown in FIG.

[0020] Fig.10 Shown is a method for implementing Figure 1 An example of a computing device of an estimation server is shown in FIG.

[0021] Fig.11 Shows the implementation Figure 1 An example of a combined transaction processing and estimation server computing device is shown in FIG.

[0022] The skilled person will understand that the elements in the drawings are illustrated for simplicity and clarity and are not necessarily drawn to scale. For example, the size of some elements in the diagrams, block diagrams or flow charts may be exaggerated relative to other elements to help improve the understanding of the embodiments of the present invention. DETAILED DESCRIPTION

[0023] Terminology

[0024] A platform refers to a set of technologies used as a basis for facilitating exchanges between two or more interdependent servers, entities, and / or devices, such as exchanges between a requester device (e.g., associated with a requester of a product or service) and a provider device (e.g., associated with a provider of a product or service). For example, the platform may provide services provided by providers to the requester, such as rides, deliveries, online shopping, insurance, and other similar services. The requester may typically access the platform using the requester device via a website, application, or other similar method. In the present disclosure, the provider device may be associated with a driver who can provide the ride or delivery requested by the requester.

[0025] A location is a location that a user can indicate or search for in a transportation or delivery booking service. A location can be a place where a user may be interested in traveling to or having something delivered. A location can also be a location where a user wants to be picked up by a driver (e.g., a pickup point) or where a driver is to retrieve an item for the user or deliver an item to the user. In a request to a driver that can be sent from a user to a transportation or delivery booking service, the location where the user wants to start a ride or send a delivery can be indicated as a location. The location can be provided in the form of global positioning system (GPS) information, latitude and longitude coordinates, geohash information, and other similar information.

[0026] Based on the indicated location, a search area can be defined to search for drivers who can provide the requested ride or delivery nearby (e.g., search for drivers located within the search area). The search area can use the location as a center point and span a certain distance from the center point. For example, the search area can be in the form of a grid centered on the location, wherein the grid can be a square, rectangle, polygon or other similar shapes. The grid can also be in the form of a circle centered on the location. The search area can be divided into a plurality of cells. Each cell can be identified by a corresponding identifier (ID), such as based on a relative distance, location and / or radius from the center of the search area (e.g., when the search area is circular). When searching for available drivers in the search area, information indicating the location of the driver (e.g., GPS information, latitude and longitude coordinates, geo-hash information or other similar information), the driver's status (e.g., available, unavailable, processing another request, completing the request soon or other similar states) and other similar information can be retrieved from the provider device of each driver located in the search area.

[0027] In at least some embodiments, a user can be any suitable type of entity, which can include a person, a consumer who wishes to purchase a product or service via a transaction processing server, a seller or merchant who wishes to sell a product or service via a transaction processing server, a motorcycle driver or pillion rider in the case where a user wishes to book or provide a motorcycle ride via a transaction processing server, a car driver or passenger in the case where a user wishes to book or provide a car ride via a transaction processing server, and other similar entities. Users registered with the transaction processing server will be referred to as registered users. Users who are not registered with the transaction processing server will be referred to as unregistered users. The term user will be used to refer to both registered users and unregistered users. Users can be interchangeably referred to as requesters (e.g., people who request products or services) or providers (e.g., people who provide requested products or services to requesters).

[0028] In at least some embodiments, the estimation server is a server that hosts a software application for estimating the arrival time of a driver at a location. Figure 2 As shown in the schematic diagram 200 of FIG. 1 , the method is implemented to estimate the arrival time of the driver at the location.

[0029] In at least some embodiments, a transaction processing server is a server that hosts software applications that process payment transactions, such as requests for drivers, travel coordination requests, user purchases of goods or services, and other similar services. The transaction processing server communicates with any other server (e.g., an estimation server) regarding processing payment transactions associated with the purchase of goods or services, such as requests for drivers (which may be interchangeably referred to as ride requests, deliveries, or other similar services requiring drivers). For example, data associated with a request message (such as a request for a driver) (e.g., date, time, location, and other similar data) may be provided to the estimation server and processed to locate a driver near the location. The transaction processing server may use a variety of different protocols and procedures in order to process payment and / or driver requests.

[0030] Transactions that may be performed via the transaction processing server include product or service purchases, credit purchases, debit transactions, funds transfers, account withdrawals, etc. The transaction processing server may be configured to process transactions via cash substitutes, which may include payment cards, letters of credit, checks, payment accounts, etc.

[0031] In at least some embodiments, the transaction processing server is typically managed by a service provider, which can be an entity (e.g., a company or organization) that operates to process transaction requests and / or driver requests (e.g., pairing a driver with a requestor of a driver request). The transaction processing server can include one or more computing devices for processing transaction requests and / or driver requests.

[0032] In at least some embodiments, a transaction account is an account of a user registered at a transaction processing server. A user may be a customer, a merchant offering products for sale on the platform and / or added to the platform, a ride or delivery provider (e.g., a driver), or any third party (e.g., a courier) who wants to use a transaction processing server. In some cases, a transaction account does not require the use of a transaction processing server. A transaction account includes details of the user (e.g., name, address, vehicle, facial image, etc.). The transaction processing server manages transactions.

[0033] Embodiments will be described by way of example only with reference to the accompanying drawings. Like reference numerals and characters in the drawings indicate like elements or equivalents.

[0034] Some portions of the following description are presented explicitly or implicitly in terms of algorithms and functional or symbolic representations of operations on data within a computer memory. These algorithmic descriptions and functional or symbolic representations are the means used by those skilled in the art of data processing to most effectively convey the substance of their work to others skilled in the art. An algorithm is here and generally conceived to be a self-consistent sequence of steps leading to a desired result. Steps are those steps requiring physical manipulation of physical quantities (such as electrical, magnetic or optical signals) that can be stored, transferred, combined, compared and otherwise manipulated.

[0035] Unless otherwise specifically stated, and as will become apparent from the following, it should be understood that throughout this specification, discussions utilizing terms such as "identifying," "detecting," "grouping," "determining," "associating," "selecting," "computing," "processing," "storing," "indicating," "recognizing," etc., refer to the actions and processes of a computer system or similar electronic device to manipulate and transform data represented as physical quantities within the computer system into other data similarly represented as physical quantities within the computer system or other information storage, transmission, or display device.

[0036] In addition, this specification also implicitly discloses a computer program, because it is obvious to those skilled in the art that the various steps of the method described herein can be implemented by computer code. The computer program is not intended to be limited to any specific programming language and its implementation. It should be understood that various programming languages ​​and their encodings can be used to implement the teachings of the disclosure contained herein. In addition, the computer program is not intended to be limited to any specific control flow. There are multiple other variants of computer programs that can use different control flows without departing from the scope of this specification.

[0037] In addition, one or more of the steps of the computer program can be performed in parallel rather than sequentially. Such a computer program can be stored on any computer-readable medium. The computer-readable medium may include a storage device, such as a disk or optical disk, a memory chip, or other storage devices suitable for being connected to a computer interface. The computer-readable medium may also include a hard-wired medium (such as exemplified in an Internet system), or include a wireless medium (such as exemplified in a GSM mobile phone system). The computer program, when loaded and executed on such a computer, effectively obtains a device that implements the steps of the preferred method.

[0038] In the present disclosure, stream aggregation is utilized to replace the K nearest neighbor search that is typically used to search for multiple drivers in a search area. The entire search area within a radius is divided into small cells. Instead of storing and updating the exact ID and location of each driver, the sum of drivers in each cell is stored to be used as an approximation of the real-time driver distribution. This can advantageously save up to 80% of the computational cost compared to calculating the K nearest neighbors.

[0039] Further, the point-to-point ETA cache is replaced with two novel spatial indexes so that the estimate of the driver's arrival time at the location is based on these indexes. Within the radius of the search area, the cells are organized according to the shape of the index, and each cell is indexed based on its relative position to the center of the search area. Advantageously, utilizing these spatial indexes on top of the point-to-point ETA cache enables the system to save more storage space. For example, using stream aggregation combined with index-based ETAs reduces storage space to 62.5% compared to the point-to-point ETA cache. The final ETA can then be calculated as a weighted average of all cells, or a certain percentile after sorting all ETA results in ascending order.

[0040] Figure 1A block diagram of an exemplary system 100 for estimating the arrival time of a driver at a location is shown. In some embodiments, the system 100 enables payment transactions for goods or services and / or requests for drivers between requesters and providers, such as requests for rides or delivery of physical items (e.g., one or more groceries or packages).

[0041] The system 100 includes a requester device 102 , a provider device 104 , an acquirer server 106 , a transaction processing server 108 , an issuer server 110 , an estimation server 140 , and a reference database 150 .

[0042] The requesting device 102 communicates with the providing device 104 via connection 112 and can be associated with a user. Connection 112 can be wireless (e.g., via NFC communication, Bluetooth, etc.) or through a network (e.g., the Internet). The requesting device 102 also communicates with the estimation server 140 via connection 121, wherein the estimation server 140 can be configured to receive information related to the request for the driver from the requesting device 102 (e.g., information such as the location of the driver, the information of the user who sends the request and / or the requesting device 102 and other similar information). Connection 121 can be via a network (e.g., the Internet). The requesting device 102 can also be connected to a cloud, which facilitates the system 100 for estimating the arrival time of the driver at the location. For example, the requesting device 102 can directly send a signal or data to the cloud via a wireless connection (e.g., via NFC communication, Bluetooth, etc.) or through a network (e.g., the Internet). It will be understood that there can be multiple requesting devices 102, so that each requesting device 102 is associated with a corresponding user.

[0043] As described above, the provider device 104 typically communicates with the requester device 102 via the transaction processing server 108 and may be associated with a provider of a ride or delivery (e.g., a driver who responds to a request for a driver). The provider device 104 in turn communicates with the acquirer server 106 via connection 114. The provider device 104 also communicates with the estimation server 140 via connection 123, wherein the estimation server 140 may be configured to receive information about the location of the driver (e.g., GPS information, latitude and longitude coordinates, geo-hash information, or other similar information), the driver's status (e.g., available, unavailable, processing another request, completing the request soon, or other similar status), identification information related to the driver and / or the provider device 104, and other similar information from the provider device 104. Connections 114 and 123 may be via a network (e.g., the Internet). The provider device 104 may also be connected to a cloud that facilitates the system 100 for estimating the arrival time of the driver at a location. For example, the provider device 104 may send a signal or data directly to the cloud via a wireless connection (e.g., via NFC communication, Bluetooth, etc.) or through a network (e.g., the Internet). It will be understood that there may be multiple provider devices 104, such that each provider device 104 is associated with a corresponding driver.

[0044] The acquirer server 106, in turn, communicates with the transaction processing server 108 via a connection 116. The transaction processing server 108, in turn, communicates with the issuer server 110 via a connection 118. The connections 116 and 118 may be via a network (eg, the Internet).

[0045] The transaction processing server 108 also communicates with the estimation server 140 via a connection 120. The connection 120 may be through a network (e.g., a local area network, a wide area network, the Internet, etc.) In one arrangement, the transaction processing server 108 and the estimation server 140 are combined, and the connection 120 may be an interconnect bus.

[0046] The estimation server 140 in turn communicates with the reference database 150 via a corresponding connection 122. The connection 122 may be through a network (e.g., the Internet). The estimation server 140 may also be connected to a cloud that facilitates the system 100 for estimating the arrival time of the driver at the location. For example, the estimation server 140 may send a signal or data directly to the cloud via a wireless connection (e.g., via NFC communication, Bluetooth, etc.) or through a network (e.g., the Internet).

[0047] The reference database 150 may include data used by the estimation server 140 to estimate the arrival time of the driver at the location. For example, data related to the search area, the sum of drivers associated with each cell in the search area, and other similar information required to estimate the arrival time of the driver at the location can be processed and stored in the reference database 150. The reference database 150 may also include data related to maps, and location information related to geographic areas, buildings, road networks, and other similar entities that can facilitate the estimation of the arrival time of the driver at the location. In an implementation, the reference database 150 may be combined with the estimation server 140. In an example, the reference database 150 may be managed by an external entity.

[0048] The estimation server 140 may be configured to define a search area divided into a plurality of cells, the search area having the location as a center point of the search area, based on the location indicated in the request to the driver from the requesting device 102. The estimation server 140 may also determine the number of provider devices 104 located in each of the plurality of cells based on the location of each of the plurality of provider devices 104. The estimation server 140 may also estimate the arrival time of the driver at the location based on the relative distances between the location and the plurality of cells according to the determined number of provider devices 104, in real time and in response to the request to the driver.

[0049] Estimating the arrival time of the driver at the location may also include identifying one or more cells of the plurality of cells based on the relative distance and a threshold, wherein a total number of provider devices 104 located in the one or more cells does not exceed the threshold.

[0050] In an implementation, there may be more than one reference database, wherein the estimation server 140 may be configured to determine which database to use at each step during the process of estimating the arrival time of the driver at the location. Alternatively, one or more modules instead of the reference database 150 may store the above-mentioned data, wherein the module may be integrated as part of the estimation server 140 or external to the estimation server 140.

[0051] In an illustrative embodiment, each of the devices 102, 104 and servers 106, 108, 110, 140 and / or reference database 150 provides an interface to enable communication with other devices 102, 104 and / or servers 106, 108, 110, 140 and / or reference database 150 connected. Such communication is facilitated by an application programming interface ("API"). Such an API can be part of a user interface, which can include a graphical user interface (GUI), a web-based interface, a programming interface (such as an application programming interface (API)) and / or a remote procedure call (RPC) set corresponding to an interface element, a message transmission interface corresponding to a message of a communication protocol, and / or a suitable combination thereof. For example, in response to an inquiry displayed on a GUI running on a corresponding API, the requesting device 102 can send data related to a request for a driver (such as the location of the driver being required), and the providing device 104 can send data related to the location or status of the associated driver.

[0052] The term "server" used herein may refer to a single computing device or multiple interconnected computing devices that operate together to perform a specific function. That is, a server may be contained within a single hardware unit or distributed among several or more different hardware units.

[0053] The estimation server 140 is associated with an entity (e.g., a company or organization or a regulator of a service). In one arrangement, the estimation server 140 is owned and operated by the entity that operates the transaction processing server 108. In such an arrangement, the estimation server 140 may be implemented as part of the transaction processing server 108 (e.g., a computer program module, a computing device, etc.).

[0054] The transaction processing server 108 may also be configured to manage the registration of users. A registered user has a transaction account (see discussion above) which includes the user's details. The registration step is called on-boarding. A user may use the requester device 102 or the provider device 104 to perform on-boarding of the transaction processing server 108.

[0055] It is not necessary to have a transaction account at the transaction processing server 108 to access the functions of the transaction processing server 108. However, there are functions available to registered users. These additional functions will be discussed below.

[0056] The user's joining process is performed by the user through one of the requester device 102 or the provider device 104. In one arrangement, the user downloads an application (which includes an API to interact with the transaction processing server 108) to the requester device 102 or the provider device 104. In another arrangement, the user visits a website (which includes an API to interact with the transaction processing server 108) on the requester device 102 or the provider device 104. The user is then able to interact with the estimation server 140. The user can be a requester or a provider associated with the requester device 102 or the provider device 104, respectively.

[0057] The details registered may include, for example, the user's name, the user's address, emergency contacts, blood type or other healthcare information, next of kin contacts, permission to retrieve data and information from the requester device 102 and / or provider device 104 to estimate the driver's arrival time at the location, such as permission to retrieve location and status information from the requester device 102 and / or provider device 104. Alternatively, another mobile device may be selected to retrieve data instead of the requester device 102 and / or provider device 104. Once joined, the user will have a transaction account where all the details are stored.

[0058] The requester device 102 is associated with a user (or requester) who is a party to a transaction occurring between the requester device 102 and the provider device 104 or between the requester device 102 and the estimation server 140. The requester device 102 may be a computing device such as a desktop computer, an interactive voice response (IVR) system, a smart phone, a laptop computer, a personal digital assistant computer (PDA), a mobile computer, a tablet computer, etc. The requester device 102 may be associated with a user who initiates a request for a driver.

[0059] The requester device 102 includes transaction credentials (e.g., a transaction account) of the requester that enables the requester device 102 to be a party to the payment transaction. If the requester has a transaction account, the transaction account may also be included (i.e., stored) in the requester device 102. For example, a mobile device (as the requester device 102) may store a customer's transaction account in the mobile device.

[0060] In one exemplary arrangement, the requester device 102 is a computing device in a watch or similar wearable and is equipped with a wireless communication interface (e.g., an NFC interface). The requester device 102 can then electronically communicate with the provider device 104 regarding the transaction request. The user uses the watch or similar wearable to make a request regarding the transaction request by pressing a button on the watch or wearable.

[0061] The provider device 104 is associated with a provider that is also a party to the transaction request or request for a driver that occurs between the requester device 102 and the provider device 104. The provider device 104 may be a computing device such as a desktop computer, an interactive voice response (IVR) system, a smart phone, a laptop computer, a personal digital assistant computer (PDA), a mobile computer, a tablet computer, etc. The provider device 104 may be associated with a provider of a ride or delivery (e.g., a driver who responds to a request for a driver).

[0062] Hereinafter, the term "provider" refers to a service provider and any third party associated with providing products or services for purchase or rides or delivery services via the provider device 104. Thus, a provider's transaction account refers to both the provider's transaction account and the transaction accounts of third parties associated with the provider (e.g., drivers, ride coordinators, or merchants).

[0063] If the provider has a transaction account, the transaction account may also be included (ie, stored) in the provider device 104. For example, a mobile device (as the provider device 104) may store the provider's transaction account in the mobile device.

[0064] In one exemplary arrangement, the provider device 104 is a computing device in a watch or similar wearable and is equipped with a wireless communication interface (e.g., an NFC interface). The provider device 104 can then electronically communicate with the requester to make a request regarding the transaction request by pressing a button on the watch or wearable.

[0065] The acquirer server 106 is associated with an acquirer, which may be an entity (e.g., a company or organization) that issues (e.g., establishes, manages, administers) a merchant's payment account (e.g., a financial bank account). Examples of acquirers include banks and / or other financial institutions. As discussed above, the acquirer server 106 may include one or more computing devices that are used to establish communication with another server (e.g., a transaction processing server 108) by exchanging messages with the other servers and / or passing information to the other servers. The acquirer server 106 forwards the payment transaction associated with the transaction request or ride request to the transaction processing server 108.

[0066] The transaction processing server 108 is configured to handle the processes related to the transaction by, for example, forwarding data and information associated with the transaction to other servers in the system 100, such as the estimation server 140. In an example, the transaction processing server 108 can transmit data (e.g., date, time, location, and other similar data) related to the request message (such as a request for a driver) to the estimation server 104 on behalf of the requester device 102 or the provider device 104. The transaction processing server 108 can use a variety of different protocols and procedures in order to process payment and / or travel coordination requests. It should be understood that payment for the transaction can be made via various methods (such as credit cards, debit cards, digital wallets, buy now, pay later schemes, and other similar payment methods).

[0067] The issuer server 110 is associated with an issuer and may include one or more computing devices for performing payment transactions. The issuer may be an entity (e.g., a company or organization) associated with the owner of the requester device 102 that issues (e.g., establishes, manages, operates) a transaction voucher or a payment account (e.g., a financial bank account). As discussed above, the issuer server 110 may include one or more computing devices for establishing communication with another server (e.g., the transaction processing server 108) by exchanging messages with the other server and / or passing information to the other server.

[0068] Reference database 150 is a database or server associated with an entity (e.g., a company or organization) that manages (e.g., establishes, operates) data related to users, transactions, products, services, and other similar data related to the entity. In an arrangement, reference database 150 may include data used by estimation server 140 to estimate the arrival time of the driver at a location. For example, data related to a search area, the sum of drivers associated with each cell in the search area, and other similar information required for estimating the arrival time of the driver at a location may be processed and stored in reference database 150. Reference database 150 may also include data related to a map, and location information related to geographic areas, buildings, road networks, and other similar entities that may facilitate the estimation of the arrival time of the driver at a location. In an implementation, reference database 150 may be combined with estimation server 140. In an example, reference database 150 may be managed by an external entity.

[0069] Advantageously, the system 100 enables ETA estimation to be performed based on the summed number of drivers in each cell and the relative position from each non-empty cell to the location, rather than calculating based on point-to-point ETA, thereby significantly reducing the computational cost of ETA.

[0070] Figure 2A schematic diagram of an exemplary estimation server 140 according to various embodiments is shown. The estimation server 140 may include a data module 260 configured to receive data and information from the requesting device 102, the providing device 104, the transaction processing server 108, the reference database 150, the cloud, and other information sources to estimate the arrival time of the driver by the estimation server 140. For example, the data module 260 may be configured to receive data and information required to process flow information, define search areas, perform arrival time estimation calculations, and other similar processes from the requesting device 102, the providing device 104, the transaction processing server 108, the reference database 150, and / or other information sources. The data module 260 may also be configured to send the information to the requesting device 102, the providing device 104, the transaction processing server 108, or other destinations that need information related to the data retrieved in response to the request for the driver.

[0071] The estimation server 140 may include a stream module 262 configured to aggregate information related to at least one location and a status of a driver from each of a plurality of provider devices 104 located within a defined search area divided into a plurality of cells. The information may be retrieved via a data stream that includes driver location updates sent from each provider device 104. For example, the stream module 262 may be configured to: determine a number of provider devices 104 located in each of a plurality of cells based on a location of each of a plurality of provider devices 104, each provider device 104 being a computing device associated with a driver located within the search area; retrieve information indicating the location and status of the provider device from each of the plurality of provider devices. The stream module 262 may also be configured to determine the eligibility of each provider device based on the status, and update the number of provider devices based on the location of each provider device determined to be qualified. The streaming process is performed in Figure 4 Further explanation in.

[0072] The estimation server 140 may further include a calculation module 264 configured to identify one or more cells of the plurality of cells based on a relative distance and a threshold, wherein a total number of provider devices 104 located in the one or more cells does not exceed the threshold. The calculation module 264 may further be configured to identify one or more cells having at least one number of provider devices based on a breadth-first search based on the relative distance and the threshold, wherein a total number of drivers located in the one or more cells does not exceed the threshold. The calculation process is performed in Figure 4 and Figure 5 Further explanation in.

[0073] The estimation server 140 may also include a map module 266 configured to define a search area divided into a plurality of cells, the search area having a location as a center point of the search area, the location being indicated in a request to the driver from the requesting device 102, the requesting device 102 being a computing device associated with the user. In an implementation, the search area may be a square grid, and defining the search area may further include defining each of the plurality of cells using an index based on a relative spatial position of each cell to the location. In another implementation, the search area may be a circular grid, and defining the search area may further include defining each of the plurality of cells using an index based on a relative distance and relative angle of each cell to the location. The map module 266 may also be configured to define a size of each cell that is proportional to a relative distance between each cell and the center point of the search area. The map definition process is performed in Figure 4 , Fig. 6A and Figure 6B Further explanation in.

[0074] The estimation server 140 may also include an estimation module 268 configured to estimate the arrival time of the driver at the location based on the relative distance between the location and multiple cells according to the determined number of provider devices 104, in real time and in response to a request to the driver. In an implementation, the estimation module 268 may also be configured to calculate an estimated arrival time value for each of one or more cells based on the relative distance, and calculate a weighted average of the calculated estimated arrival time values ​​based on the determined number of provider devices located in each of the one or more cells. In another implementation, the estimation module 268 may be configured to calculate an estimated arrival time value for each of the one or more cells based on the relative distance, sort the estimated arrival time values ​​in ascending order, and determine the arrival time based on a percentile of the sorted values. The estimation process is performed in Figure 4 Further explanation in.

[0075] Each of the data module 260, the flow module 262, the calculation module 264, the map module 266, and the estimation module 268 may also communicate with a processing module (not shown) of the estimation server 140, for example, to coordinate the corresponding tasks and functions during the process. The data module 260 may also be configured to communicate with each of the processing module, the flow module 262, the calculation module 264, the map module 266, and the estimation module 268 and store data and information thereof. Alternatively, all tasks and functions required to adaptively estimate the arrival time of the driver at the location may be performed by a single processor of the estimation server 140.

[0076] Figure 4An overview of a system for estimating a driver's arrival time at a location according to various embodiments is shown. A stream aggregator 402 may be configured to receive information including at least a driver location update (e.g., GPS information, latitude and longitude coordinates, geo-hash information, or other similar information) and a driver status update (e.g., available, unavailable, processing another request, completing a request soon, or other similar status) sent from a provider device 104 of each driver in a plurality of provider devices 104. Each of a plurality of provider devices 104 may be located within a search area, which is defined based on the location indicated in a request to a driver received from a requester device 102. The stream aggregator 402 may then perform the following steps to aggregate the final result. In a first step, each location update is filtered based on certain criteria, such as the status of each driver received (e.g., only considering drivers with an "available" status, or depending on other criteria of the application). In the second step, each driver location update is mapped to a corresponding cell (e.g., each cell is identified by a corresponding cell ID) in a plurality of cells constituting a search area partitioned by a geo-hash or the first N digits of latitude and longitude. In the third step, the total number of qualified drivers (e.g., the number of drivers (DriverCount)) in each cell is summed over a short time window. In the fourth step, the resulting stream is output as {CellID:DriverCount} pairs for further processing.

[0077] The advance ETA calculator 404 may be configured to receive the output stream from the stream aggregator 402 and store all pairs in a lookup table. The lookup table may be stored locally in a memory of the advance ETA calculator 404, or in the reference database 150. Upon receiving a request for a driver from the requesting device 102, the advance ETA calculator 404 may be configured to perform a breadth-first search. An example of a breadth-first algorithm that may be utilized by the advance ETA calculator 404 is described in Figure 5 500. For example, a breadth-first search may be performed until a search criterion is met, such as until a target number of drivers for calculating an ETA is found (e.g., as shown by reference numeral 508) and until a limit on the relative distance between a cell and a location (e.g., indicated as search center 502 and identified by identifier searchCenter.cellId 504) is reached (e.g., as shown by reference numeral 506).

[0078] For each non-empty cell, the pre-ETA calculator 404 obtains the ETA value from either of the two caches or the ETA calculation engine. The final ETA result can be, for example, a weighted average. where count irepresents the total number of drivers in cell i, and ETA i represents the ETA of cell i. In an implementation, the ETA results of all non-empty cells in the plurality of cells may be sorted in ascending order, and the final ETA result may be viewed as a percentile, for example, The estimation is performed in real time and in response to a request to the driver.

[0079] The search area may be defined by the map engine 410. The search area may be Fig. 6A The form of the grid shown in diagram 600 is such that each of the multiple cells constituting the search area is defined using a grid-based index 406. In diagram 600, the search area is divided into multiple small grids (e.g., equivalent to multiple cells). For example, for a search area of ​​5km×5km, using geohash 7, each grid will be 152.9m×152.4m; using the first 3 digits of latitude and longitude, each grid will be 100m×100m, because 0.001 degrees covers 100m. Using the first 3 digit truncation method as an example, the grid-based index 406 can divide the search area into multiple grids of the same latitude and longitude (LatLng) intervals as shown in diagram 600.

[0080] The unique identifier of a grid is the latitude and longitude coordinates of the center point of the grid. There can be two types of grid indexes: absolute grid index and relative grid index. Absolute grid index can encode any point. For example, assuming the absolute grid index code is 1.324,103.807, the LatLng interval of the grid is 0.001 degrees because there are 3 decimal places, and the grid refers to the area with a latitude interval of [1.324,1.325) and a longitude interval of [103.807,103.808).

[0081] The relative grid index must be associated with the center point 602. Given the location indicated in the request for the driver from the requesting device 102 as the center point 602 of the search area, and the driver's location, the latDiff and IngDiff values ​​can be calculated as the difference between the latitude / longitude of the driver's location and the latitude / longitude of the center point 602. The two spatial codes will then be divided by the precision and rounded by latDiff / lngDiff. For example, if the precision is 0.001 degrees, the location indicated in the request for the driver is 1.324,103.807, and there are two drivers A and B at points 1.32725,103.80301 and 1.32113,103.80914, respectively, then the grid index code for driver A is (3,-4), and the code for driver B is (-3,2). Advantageously, encoding the driver's location using a relative grid index only takes up 2 bytes, improving data storage and computational efficiency.

[0082] In an implementation, the grid-based index may work with the stream aggregator 402 and the map engine 410 based on the following steps:

[0083] Step a: Upon receiving the driver's location, the stream aggregator 402 removes the driver identifier and aggregates the driver into a cell. The cell can be defined by a geographic hash or by the first N digits of latitude and longitude. Then, at certain intervals, the stream aggregator 402 issues {cellID:driverCount} pairs that can be stored in the reference database 150. Step b: When a request for a driver is received, the pre-ETA calculator 404 first looks up all nearby cell IDs based on the center location. The cells can be organized in a manner similar to that in step a. Then, for each cell, the cell obtains the corresponding ETA stored in the cache. The cache key is identified by a grid-based index. If no entry exists in the cache, the pre-ETA calculator 404 will call the map engine 410 to calculate the ETA from the current cell center to the requested center. The result will then be stored in the cache.

[0084] Step c: The final ETA can be a weighted average based on the number of drivers in each cell in step a multiplied by the ETA in each cell in step b, such as the formula for the weighted average As shown, count i represents the total number of drivers in cell i, and ETA i Represents the ETA of cell i.

[0085] The search area can also be Figure 6BThe circular form shown in the diagram 604 of , makes each of the multiple cells constituting the search area defined by the ring-based index 408. The ring index refers to a polar coordinate system, and the index also needs to be associated with an origin (e.g., a center point 606). Given the position indicated in the request to the driver from the requesting device 102 as the center point 606, and the driver's position, a 2-bit spatial code can be calculated for each driver, which consists of the distance from the driver's position to the center point 606 divided by the distance accuracy and the angle between the two points divided by the angle accuracy. In an implementation based on the diagram 604, the distance accuracy is 100m, and the angular accuracy of the innermost ring 608 is divided by 90 degrees, so that the innermost ring 608 is divided into 4 zones. For each ring after the innermost ring 608, the number of subsequent zones increases by 1. For example, the distance from the center point 606 to driver A may be 213 m and the angle is 97 degrees, the distance from driver B to the center point 606 may be 392 m and the angle is 108 degrees, the distance code of driver A is 2, the angle code is 97 / (4+2)=16, and the distance code of driver B is 3, the angle code is 108 / (4+3)=15. Therefore, the circular index code of driver A (e.g., equivalent to the cell ID of the cell where driver A is located) is (2,16), and the circular index code of driver B (e.g., equivalent to the cell ID of the cell where driver B is located) is (3,21). Advantageously, encoding the location of the driver using the circular grid index only takes up 2 bytes, improving data storage and computing efficiency.

[0086] It can be seen visually that the ring-based index of diagram 604 is more granular than the grid-based index of diagram 600, especially for the outer ring of diagram 604. The logic behind this is that as the distance between the ring and the center point 608 becomes longer, the road network and real-time traffic will become more and more dominant factors in calculating the ETA. Therefore, the size of each cell can be defined as proportional to the relative distance between each cell and the center point of the search area. It will be understood that the search area can also be a square (e.g., as shown in diagram 600), a rectangle, a polygon, or other similar shapes.

[0087] In an implementation, the circular grid based index may work with the stream aggregator 402 and the map engine 410 based on the following steps:

[0088] Step a: Upon receiving the driver's location, the stream aggregator 402 removes the driver identifier and aggregates the driver into cells. The cells can be defined by geo-hash or by the first N digits of latitude and longitude. Then, at certain intervals, the stream aggregator 402 emits {cellID:driverCount} pairs that can be stored in the reference database 150.

[0089] Step b: When a request for a driver is received, the pre-ETA calculator 404 first looks up all nearby cell IDs based on the center location. The cells can be organized in a similar manner to that in step a. Then, for each cell, the cell obtains the corresponding ETA stored in the cache. The cache key is identified by obtaining the distance and angle of the current cell center, which forms a circular grid index. If an entry does not exist in the cache, the pre-ETA calculator 404 will call the map engine 410 to calculate the ETA from the current cell center to the requested center. The result will then be stored in the cache. Step c: The final ETA can be a weighted average based on the number of drivers in each cell in step a multiplied by the ETA in each cell in step b, as shown in the formula as the weighted average. As shown, count i represents the total number of drivers in cell i, and ETA i Represents the ETA of cell i.

[0090] Figure 7 An exemplary flow chart of a method 700 for estimating a driver's arrival time at a location according to various embodiments is shown. In step 702, a search area divided into a plurality of cells is defined, the search area having a location as a center point of the search area, the location indicated in a request to the driver from a requesting device, the requesting device being a computing device associated with a user. In step 704, a number of provider devices located in each of a plurality of cells is determined based on the location of each of a plurality of provider devices, each provider device being a computing device associated with a driver located within the search area. In step 706, in real time and in response to the request to the driver, an arrival time of the driver at the location is estimated based on the relative distances between the location and the plurality of cells according to the determined number of provider devices.

[0091] Fig. 8A An exemplary computer system 1400 is depicted, according to which the described estimation server 140 can be practiced. The computer system 1400 includes a computer module 1401. An external modulator-demodulator (modem) transceiver device 1416 can be used by the computer module 1401 to communicate to and from a communication network 1420 via a connection 1421. The communication network 1420 can be a wide area network (WAN), such as the Internet, a cellular telecommunications network, or a dedicated WAN. In the case where the connection 1421 is a telephone line, the modem 1416 can be a traditional "dial-up" modem. Alternatively, in the case where the connection 1421 is a high-capacity (e.g., cable) connection, the modem 1416 can be a broadband modem. A wireless modem can also be used for wireless connection to the communication network 1420.

[0092] The computer module 1401 typically includes at least one processor unit 1405 and a memory unit 1406. For example, the memory unit 1406 may have a semiconductor random access memory (RAM) and a semiconductor read-only memory (ROM). The computer module 1401 also includes an interface 1408 for an external modem 1416. In some implementations, the modem 1416 may be incorporated into the computer module 1401, for example, into the interface 1408. The computer module 1401 also has a local network interface 1411 that permits the computer system 1400 to be coupled to a local area communication network 1422, known as a local area network (LAN), via a connection 1423. As shown in FIG. Fig. 8A As shown in FIG. 1 , the local communication network 1422 may also be coupled to the wide area network 1420 via a connection 1424, which will typically include a so-called "firewall" device or a device with similar functions. The local network interface 1411 may include an Ethernet circuit card, wireless device or IEEE 802.11 wireless device; however, for interface 1411, various other types of interfaces may be practiced.

[0093] The I / O interface 1408 may provide either or both of a serial and parallel connection, the former typically being implemented in accordance with the Universal Serial Bus (USB) standard and having a corresponding USB connector (not shown). A storage device 1409 is provided and typically includes a hard disk drive (HDD) 1410. Other storage devices, such as floppy disk drives and tape drives (not shown) may also be used. An optical disk drive 1412 is typically provided to act as a non-volatile data source. For example, portable memory devices such as optical disks, USB-RAM, portable external hard disk drives, and floppy disks may be used as appropriate data sources for the system 1400.

[0094] The components 1405 to 1412 of the computer module 1401 typically communicate via the interconnection bus 1304 and in a manner that enables conventional operating modes of the computer system 1400 known to those skilled in the relevant art. For example, the processor 1405 is coupled to the system bus 1404 using connection 1418. Likewise, the memory 1406 and the optical drive 1412 are coupled to the system bus 1404 via connection 1419. Examples of computers on which the described apparatus may be practiced include IBM-PCs and compatibles thereof, Sun Sparcstations, Apple or similar computer systems.

[0095] The method 700 performed by the estimation server 140 can be implemented using a computer system 1400. These processes can be implemented as one or more software applications 1433 executable within the computer system 1400. Specifically, the method 700 is implemented by instructions in the software 1433 practiced within the computer system 1400. The software instructions can be formed into one or more code modules, each code module for performing one or more specific tasks. The software can also be divided into two separate parts, wherein the first part and the corresponding code module perform the method 700, and the second part and the corresponding code module manage the user interface between the first part and the user.

[0096] The software may be stored in a computer readable medium, including, for example, the storage device described below. The software is loaded into the computer system 1400 from the computer readable medium and then executed by the computer system 1400. A computer readable medium having such software or a computer program recorded on a computer readable medium is a computer program product. The use of a computer program product in the computer system 1400 preferably implements an advantageous device for estimating the server 140.

[0097] The software 1433 is typically stored in the HDD 1410 or the memory 1406. The software is loaded into the computer system 1400 from a computer readable medium and executed by the computer system 1400. Thus, for example, the software 1433 may be stored on an optically readable disk storage medium (e.g., a CD-ROM) 1425 read by the optical disk drive 1412. A computer readable medium having such software or a computer program recorded on a computer readable medium is a computer program product. The use of the computer program product in the computer system 1400 preferably implements an apparatus for estimating the server 140.

[0098] In some examples, the application 1433 may be supplied to the user encoded on one or more CD-ROMs 1425 and read via the corresponding drive 1412, or alternatively, may be read by the user from the network 1420 or 1422. Further, the software may also be loaded into the computer system 1400 from other computer-readable media. A computer-readable storage medium is any non-transitory tangible storage medium that provides recorded instructions and / or data to the computer system 1400 for execution and / or processing. Examples of such storage media include floppy disks, magnetic tapes, optical disks, hard disk drives, ROMs or integrated circuits, USB memories, magneto-optical disks, or computer-readable cards (such as PCMCIA cards), etc., whether such devices are internal or external to the computer module 1401. Examples of transient or non-tangible computer-readable transmission media that may also be involved in providing software, application programs, instructions and / or data to the computer module 1401 include radio or infrared transmission channels and network connections to another computer or networked device, as well as the Internet or intranet including information recorded on email transmissions and websites, etc.

[0099] The second part of application program 1433 and the corresponding code module mentioned above can be executed to implement one or more graphical user interfaces (GUIs) to be presented on a display or otherwise represented. By typically manipulating a keyboard and a mouse, users and applications of computer system 1400 can manipulate the interface in a functionally adaptable manner to provide control commands and / or input to applications associated with the GUI. Other forms of functionally adaptable user interfaces can also be implemented, such as audio interfaces that utilize voice prompts output via a speaker and user voice commands input via a microphone.

[0100] It should be understood that the structural background of computer system 1400 (i.e., estimation server 140) is presented by way of example only. Therefore, in some arrangements, one or more features of computer system 1400 may be omitted. In addition, in some arrangements, one or more features of computer system 1400 may be combined together. In addition, in some devices, one or more features of computer system 1400 may be separated into one or more component parts.

[0101] Fig. 9An implementation of a transaction processing server 108 (i.e., a computer system 1300) is shown. In this implementation, the transaction processing server 108 can generally be described as a physical device including at least one processor 802 and at least one memory 804 including computer program code. The at least one memory 804 and the computer program code are configured to, together with the at least one processor 802, enable the transaction processing server 108 to facilitate the operations described in the method 700. The transaction processing server 108 may also include a transaction processing module 806. The memory 804 stores the computer program code, and the processor 802 compiles the program code to enable the transaction processing module 806 to perform the corresponding functions.

[0102] refer to Figure 1 , the transaction processing module 806 performs the function of communicating with the requester device 102 and the provider device 104; and the acquirer server 106 and the issuer server 110 receive and send transactions, requests for drivers, or other similar messages, respectively. The transaction processing module 806 can be configured to handle the process related to the transaction by, for example, forwarding data and information associated with the transaction to other servers in the system 100 (such as the estimation server 140). For example, the transaction processing server 108 can replace the requester device 102 or the provider device 104 and transmit data (such as date, time, location, and other similar data) related to the request message (such as the request for the driver) to the estimation server 104. The transaction processing server 108 can use a variety of different protocols and procedures to process payment and / or travel coordination requests. It should be understood that payment for the transaction can be made via various methods (such as credit cards, debit cards, digital wallets, buy now, pay later schemes, and other similar payment methods).

[0103] Fig.10 An alternative implementation of the estimation server 140 (i.e., computer system 1400) is shown. In an alternative implementation, the estimation server 140 can be generally described as a physical device including at least one processor 902 and at least one memory 904 including computer program code. The at least one memory 904 and the computer program code are configured to, together with the at least one processor 902, cause the estimation server 140 to perform the operations described in the method 700. The estimation server 140 may also include a data module 906, a stream module 908, a calculation module 910, a map module 912, and an estimation module 914. The memory 904 stores the computer program code, which the processor 902 compiles to cause each of the modules 906 to 914 to perform their respective functions.

[0104] refer to Figures 1 to 7, the stream module 908 performs the function of aggregating information related to at least one location and a status of a driver from each of a plurality of provider devices 104, the plurality of provider devices being located within a defined search area divided into a plurality of cells. The information may be retrieved via a data stream that includes driver location updates sent from each provider device 104. For example, the stream module 908 may be configured to: determine the number of provider devices 104 located in each of a plurality of cells based on the location of each of the plurality of provider devices 104, each provider device 104 being a computing device associated with a driver located within the search area; retrieve information indicating the location and status of the provider device from each of the plurality of provider devices. The stream module 908 may also be configured to determine the eligibility of each provider device based on the status, and update the number of provider devices based on the location of each provider device determined to be qualified.

[0105] refer to Figures 1 to 7 , the calculation module 910 performs the function of identifying one or more cells in the plurality of cells based on the relative distance and the threshold, wherein the total number of the provider devices 104 located in the one or more cells does not exceed the threshold. The calculation module 264 may also be configured to identify one or more cells having at least one number of provider devices based on a breadth-first search, the breadth search being based on the relative distance and the threshold, wherein the total number of the drivers located in the one or more cells does not exceed the threshold.

[0106] refer to Figures 1 to 7 , the map module 912 performs the function of defining a search area divided into a plurality of cells, the search area having a location as a center point of the search area, the location indicated in the request to the driver from the requesting device 102, the requesting device 102 being a computing device associated with the user. In an implementation, the search area may be a square grid, and defining the search area may further include defining each of the plurality of cells using an index based on a relative spatial position of each cell to the location. In another implementation, the search area may be a circular grid, and defining the search area may further include defining each of the plurality of cells using an index based on a relative distance and relative angle of each cell to the location. The map module 266 may also be configured to define the size of each cell as proportional to the relative distance between each cell and the center point of the search area.

[0107] refer to Figures 1 to 7, the estimation module 914 performs the function of estimating the arrival time of the driver at the location based on the relative distance between the location and multiple cells according to the determined number of provider devices 104 in real time and in response to the request of the driver. In an implementation, the estimation module 268 can also be configured to calculate the estimated arrival time value for each of the one or more cells based on the relative distance, and calculate the weighted average of the calculated estimated arrival time values ​​based on the determined number of provider devices located in each of the one or more cells. In another implementation, the estimation module 268 can be configured to calculate the estimated arrival time value for each of the one or more cells based on the relative distance, sort the estimated arrival time values ​​in ascending order, and determine the arrival time based on the percentile of the sorted values.

[0108] refer to Figures 1 to 7 , the data module 906 performs the function of receiving data and information from the requester device 102, the provider device 104, the transaction processing server 108, the reference database 150, the cloud, and other information sources to facilitate the method 700. For example, the data module 906 can be configured to receive data and information required to process flow information, define search areas, perform arrival time estimation calculations, and other similar processes from the requester device 102, the provider device 104, the transaction processing server 108, the reference database 150, and / or other information sources. The data module 260 can also be configured to send the information to the requester device 102, the provider device 104, the transaction processing server 108, or other destinations that need information related to the data retrieved in response to the request for the driver.

[0109] Figure 8B A general purpose computer system 1500 is depicted on which the described combined transaction processing server 108 and estimation server 140 can be practiced. The computer system 1500 includes a computer module 1501. An external modulator-demodulator (modem) transceiver device 1516 can be used by the computer module 1501 to communicate to and from a communication network 1520 via a connection 1521. The communication network 1520 can be a wide area network (WAN) such as the Internet, a cellular telecommunications network, or a dedicated WAN. In the case where the connection 1521 is a telephone line, the modem 1516 can be a traditional "dial-up" modem. Alternatively, in the case where the connection 1521 is a high capacity (e.g., cable) connection, the modem 1516 can be a broadband modem. A wireless modem can also be used for wireless connection to the communication network 1520.

[0110] The computer module 1501 typically includes at least one processor unit 1505 and a memory unit 1506. For example, the memory unit 1506 may have a semiconductor random access memory (RAM) and a semiconductor read-only memory (ROM). The computer module 1501 also includes an interface 1508 for an external modem 1516. In some implementations, the modem 1516 may be incorporated into the computer module 1501, for example, into the interface 1508. The computer module 1501 also has a local network interface 1511 that permits the computer system 1500 to be coupled to a local area communication network 1522, known as a local area network (LAN), via a connection 1523. As illustrated in FIG. 8D , the local communication network 1522 may also be coupled to a wide area network 1520 via a connection 1524, which will typically include a so-called "firewall" device or a device of similar functionality. The local network interface 1511 may include an Ethernet circuit card, wireless device or IEEE 802.11 wireless device; however, for interface 1511, various other types of interfaces may be practiced.

[0111] The I / O interface 1508 may provide either or both of a serial and parallel connection, the former typically being implemented in accordance with the Universal Serial Bus (USB) standard and having a corresponding USB connector (not shown). A storage device 1509 is provided and typically includes a hard disk drive (HDD) 1510. Other storage devices such as floppy disk drives and tape drives (not shown) may also be used. An optical disk drive 1512 is typically provided to act as a non-volatile data source. For example, portable memory devices such as optical disks, USB-RAM, portable external hard disk drives, and floppy disks may be used as appropriate data sources for the system 1500.

[0112] The components 1505 to 1512 of the computer module 1501 typically communicate via an interconnection bus 1504 and in a manner that enables conventional modes of operation of the computer system 1500 known to those skilled in the relevant art. For example, the processor 1505 is coupled to the system bus 1504 using connection 1518. Likewise, the memory 1506 and the optical drive 1512 are coupled to the system bus 1504 via connection 1519. Examples of computers on which the described apparatus may be practiced include IBM-PCs and compatibles thereof, Sun Sparc stations, Apple or similar computer systems.

[0113] The steps of the method 700 performed by the estimation server 140 and facilitated by the transaction processing server 108 can be implemented using the computer system 1500. For example, the steps of the method 700 performed by the estimation server 140 can be implemented as one or more software applications 1533 executable within the computer system 1500. Specifically, the steps of the method 700 are affected by instructions in the software 1533 executed within the computer system 1500. The software instructions can be formed into one or more code modules, each code module for performing one or more specific tasks. The software can also be divided into two separate parts, where the first part and the corresponding code modules perform the steps of the method 700, and the second part and the corresponding code modules manage the user interface between the first part and the user.

[0114] The software may be stored in a computer readable medium, including, for example, the storage device described below. The software is loaded from the computer readable medium into the computer system 1500 and then executed by the computer system 1500. A computer readable medium having such software or a computer program recorded on a computer readable medium is a computer program product. The use of the computer program product in the computer system 1500 preferably implements an advantageous apparatus for a combined transaction processing and estimation server.

[0115] The software 1533 is typically stored in the HDD 1510 or the memory 1506. The software is loaded into the computer system 1500 from a computer readable medium and executed by the computer system 1500. Thus, for example, the software 1533 may be stored on an optically readable disk storage medium (e.g., a CD-ROM) 1525 read by the optical disk drive 1512. A computer readable medium having such software or a computer program recorded on a computer readable medium is a computer program product. The use of the computer program product in the computer system 1500 preferably implements an apparatus for a combined transaction processing and estimation server.

[0116] In some examples, the application 1533 may be supplied to the user encoded on one or more CD-ROMs 1525 and read via the corresponding drive 1512, or alternatively, may be read by the user from the network 1520 or 1522. Further, the software may also be loaded into the computer system 1500 from other computer-readable media. A computer-readable storage medium is any non-transitory tangible storage medium that provides recorded instructions and / or data to the computer system 1500 for execution and / or processing. Examples of such storage media include floppy disks, magnetic tapes, optical disks, hard disk drives, ROMs or integrated circuits, USB memories, magneto-optical disks, or computer-readable cards (such as PCMCIA cards), etc., whether such devices are internal or external to the computer module 1501. Examples of transient or non-tangible computer-readable transmission media that may also be involved in providing software, applications, instructions and / or data to the computer module 1501 include radio or infrared transmission channels and network connections to another computer or networked device, as well as the Internet or intranet including information recorded on email transmissions and websites, etc.

[0117] The second part of application program 1533 and the corresponding code module mentioned above can be executed to implement one or more graphical user interfaces (GUIs) to be presented on a display or otherwise represented. By typically manipulating a keyboard and a mouse, users and applications of computer system 1500 can manipulate the interface in a functionally adaptable manner to provide control commands and / or input to applications associated with the GUI. Other forms of functionally adaptable user interfaces can also be implemented, such as audio interfaces that utilize voice prompts output via a speaker and user voice commands input via a microphone.

[0118] It should be understood that the structural background of the computer system 1500 (i.e., the combined transaction processing and estimation server 1500) is presented only as an example. Therefore, in some arrangements, one or more features of the server 1500 may be omitted. In addition, in some arrangements, one or more features of the server 1500 may be combined together. In addition, in some arrangements, one or more features of the server 1500 may be separated into one or more component parts.

[0119] Fig.11An alternative implementation of a combined transaction processing and estimation server (i.e., computer system 1500) is shown. In an alternative implementation, the combined transaction processing and estimation server can generally be described as a physical device including at least one processor 1002 and at least one memory 904 including computer program code. The at least one memory 1004 and the computer program code are configured to, together with the at least one processor 1002, cause the combined transaction processing and estimation server to perform the operations described in the steps of method 700. The combined transaction processing and estimation server may also include a transaction processing module 806, a data module 906, a detection module 908, an association module 910, a clustering module 912, and an identification module 914. The memory 1004 stores computer program code, which the processor 1002 compiles to cause each of the modules 806 to 912 to perform their respective functions. The transaction processing module 806 performs operations related to the processing of transactions with respect to the transaction processing module 806. Fig. 9 The data module 906, the flow module 908, the calculation module 910, the map module 912 and the estimation module 914 perform the same functions as those described for the same transaction processing module in FIG. Fig.10 The same functions are described in the same corresponding modules in .

[0120] It will be appreciated by those skilled in the art that various variations and / or modifications may be made to the disclosure shown in the specific embodiments without departing from the scope of the broadly described specification. Therefore, the present embodiments are to be considered in all aspects as illustrative and not restrictive.

Claims

1. A method for estimating an arrival time of a driver at a location, comprising: defining, by the server, a search area divided into a plurality of cells, the search area having a location as a center point of the search area, the location indicated in a request to the driver from a requesting device, the requesting device being a computing device associated with a user; determining, by the server, a number of provider devices located in each of the plurality of cells based on a location of each of a plurality of provider devices, each provider device being a computing device associated with a driver located within the search area; as well as The server estimates, in real time and in response to the request for the driver, an arrival time of the driver at the location based on relative distances between the location and the plurality of cells according to the determined number of provider devices.

2. The method according to claim 1, wherein: Estimating the arrival time of the driver at the location further includes identifying one or more cells of the plurality of cells based on the relative distance and a threshold, wherein a total number of provider devices located in the one or more cells does not exceed the threshold.

3. The method according to claim 2, wherein: Estimating the arrival time of the driver at the location further comprises: calculating an estimated time of arrival value for each of the one or more cells based on the relative distance; and A weighted average of the calculated estimated time of arrival values ​​is calculated based on the determined number of provider devices located in each of the one or more cells.

4. The method according to claim 2, wherein: Estimating the arrival time of the driver at the location further comprises: calculating an estimated time of arrival value for each of the one or more cells based on the relative distance; sorting the estimated time of arrival values ​​in ascending order; and The arrival time is determined based on a percentile of the ordered values.

5. The method according to any one of claims 1 to 4, wherein: The search area is a square grid, and defining the search area further comprises defining each cell of the plurality of cells using an index based on a relative spatial position of each cell to the location.

6. The method according to any one of claims 1 to 4, wherein: The search area is a circular grid, and defining the search area further comprises defining each of the plurality of cells using an index based on a relative distance and a relative angle of each cell to the location.

7. The method of claim 6, further comprising: The size of each cell is defined to be inversely proportional to the relative distance between each cell and the center point of the search area.

8. A method according to any one of the preceding claims, wherein: Determining the number of the provider devices in each cell further includes: retrieving, from each of the plurality of provider devices, information indicating a location and a status of the provider device; determining eligibility of each provider device based on the status; and The number of provider devices is updated based on the location of each provider device determined to be eligible.

9. The method according to any one of the preceding claims, further comprising: One or more cells having at least one number of provider devices are identified based on a breadth-first search based on the relative distance and a threshold, wherein a total number of drivers located in the one or more cells does not exceed the threshold.

10. A system for estimating an arrival time of a driver at a location, comprising: at least one processor; as well as at least one memory including computer program code; The at least one memory and the computer program code are configured to, with the at least one processor, cause the system to at least: defining a search area divided into a plurality of cells, the search area having a location as a center point of the search area, the location indicated in a request to the driver from a requesting device, the requesting device being a computing device associated with a user; determining a number of provider devices located in each of the plurality of cells based on a location of each of a plurality of provider devices, each provider device being a computing device associated with a driver located within the search area; as well as In real time and in response to the request for the driver, an arrival time of the driver at the location is estimated based on relative distances between the location and the plurality of cells according to the determined number of provider devices.

11. The system according to claim 10, wherein: Estimating the arrival time of the driver at the location further includes identifying one or more cells of the plurality of cells based on the relative distance and a threshold, wherein a total number of provider devices located in the one or more cells does not exceed the threshold.

12. The system according to claim 11, wherein: Estimating the arrival time of the driver at the location further comprises: calculating an estimated time of arrival value for each of the one or more cells based on the relative distance; and A weighted average of the calculated estimated time of arrival values ​​is calculated based on the determined number of provider devices located in each of the one or more cells.

13. The system according to claim 11, wherein: Estimating the arrival time of the driver at the location further comprises: calculating an estimated time of arrival value for each of the one or more cells based on the relative distance; sorting the estimated time of arrival values ​​in ascending order; and The arrival time is determined based on a percentile of the ordered values.

14. A system according to any one of claims 10 to 13, wherein: The search area is a square grid, and defining the search area further comprises defining each cell of the plurality of cells using an index based on a relative spatial position of each cell to the location.

15. The system according to any one of claims 10 to 13, wherein: The search area is a circular grid, and defining the search area further comprises defining each of the plurality of cells using an index based on a relative distance and a relative angle of each cell to the location.

16. The system of claim 15, further configured to define a size of each cell inversely proportional to a relative distance between each cell and the center point of the search area.

17. A system according to any one of the preceding claims, wherein: Determining the number of the provider devices in each cell further includes: retrieving, from each of the plurality of provider devices, information indicating a location and a status of the provider device; determining eligibility of each provider device based on the status; and The number of provider devices is updated based on the location of each provider device determined to be eligible.

18. The system of any of the preceding claims, further configured to identify one or more cells having at least one number of provider devices based on a breadth-first search, the breadth search being based on the relative distance and a threshold, wherein: The total number of drivers located in the one or more cells does not exceed the threshold.