Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SYSTEM AND METHOD FOR RIDE ORDER DISPATCHING
Document Type and Number:
WIPO Patent Application WO/2019/050908
Kind Code:
A1
Abstract:
A ride order dispatching system comprises a processor, and a non-transitory computer-readable storage medium storing instructions that, when executed by the processor, cause the processor to perform a method. The method comprises: obtaining, from a computing device, a current location of a vehicle; inputting the current location of the vehicle and a time to a trained neural network model to obtain action information for the vehicle, the action information comprising: staying at the current location of the vehicle, re-positioning the vehicle, or accepting a ride order; and transmitting the action information to the computing device to cause the vehicle to stay at the current location, re-position to another location, or accept the ride order by proceeding to a pick-up location of the ride order.

Inventors:
QIN ZHIWEI (US)
TANG XIAOCHENG (US)
Application Number:
PCT/US2018/049493
Publication Date:
March 14, 2019
Filing Date:
September 05, 2018
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
DIDI RES AMERICA LLC (US)
International Classes:
G06Q30/00
Foreign References:
US20040024621A12004-02-05
US20150204684A12015-07-23
US20170123423A12017-05-04
US20170132334A12017-05-11
Other References:
FINNMAN ET AL.: "Deep reinforcement learning compared with Q-table learning applied to backgammon", DEGREE PROJECT IN TECHNOLOGY, FIRST CYCLE, 2016, STOCKHOLM , SWEDEN, XP055582073, Retrieved from the Internet [retrieved on 20181108]
Attorney, Agent or Firm:
CHEN, Weiguo (US)
Download PDF:
Claims:
CLAIMS:

1 . A ride order dispatching system, comprising:

a processor; and

a non-transitory computer-readable storage medium storing instructions that, when executed by the processor, cause the processor to perform a method, the method processing:

obtaining, from a computing device, a current location of a vehicle; inputting the current location of the vehicle and a time to a trained neural network model to obtain action information for the vehicle, the action information comprising: staying at the current location of the vehicle, re-positioning the vehicle, or accepting a ride order; and

transmitting the action information to the computing device to cause the vehicle to stay at the current location, re-position to another location, or accept the ride order by proceeding to a pick-up location of the ride order.

2. The system of claim 1 , wherein:

the neural network model comprises a deep neural network and a

reinforcement learning algorithm; and

the deep neural network comprises two deep-Q networks.

3. The system of claim 1 , wherein the neural network model comprises:

an input layer comprising one or more action inputs and one or more state inputs;

one or more hidden layers; and

an output layer comprising a state-action value output.

4. The system of claim 3, wherein:

the action comprises a destination and a drop-off time associated with performing a vehicle trip;

the state comprises geo-coordinates of the vehicle and a pick-up time associated with the vehicle trip;

the state-action value comprises a cumulative reward; and the input layers, the hidden layers, and the output layer are in a sequence and every two neighbor layers are associated with one or more weights.

5. The system of claim 4, wherein the neural network model is trained by: modeling the vehicle trips by passing the action inputs and state inputs through the hidden layers to obtain the output, each vehicle trip associated with a first state corresponding to an origin, a second state corresponding to a destination, an action corresponding to fulfilling a ride order from the origin to the destination, and a reward corresponding to fees for the ride; and

updating the weights to maximize the cumulative reward.

6. The system of claim 5, wherein modeling the vehicle trips comprises:

modeling a first vehicle trip to obtain the second state associated with the first vehicle trip; and

searching from a spatio-temporal space to obtain an action to perform at the second state, the spatio-temporal space is within a spatial threshold from the second state.

7. The system of claim 5, wherein modeling the vehicle trips comprises:

modeling a first vehicle trip to obtain the second state associated with the first vehicle trip; and

searching from a spatio-temporal space to obtain an action to perform at the second state, the spatio-temporal space is within a temporal threshold from the second state.

8. The system of claim 4, wherein:

data used for training the neural network model comprises (1 ) a plurality of the vehicle trips each associated with a measurement period, and (2) one or more terminal states each associated with an end of the measurement period.

9. A computer-implemented method for ride order dispatching, comprising: obtaining, from a computing device, a current location of a vehicle;

inputting the current location of the vehicle and a time to a trained neural network model to obtain action information for the vehicle, the action information comprising: staying at the current location of the vehicle, re-positioning the vehicle, or accepting a ride order; and

transmitting the action information to the computing device to cause the vehicle to stay at the current location, re-position to another location, or accept the ride order by proceeding to a pick-up location of the ride order.

10. The method of claim 9, wherein:

the neural network model comprises a deep neural network and a

reinforcement learning algorithm; and

the deep neural network comprises two deep-Q networks.

1 1 . The method of claim 9, wherein the neural network model comprises: an input layer comprising one or more action inputs and one or more state inputs;

one or more hidden layers; and

an output layer comprising a state-action value output.

12. The method of claim 1 1 , wherein:

the action comprises a destination and a drop-off time associated with performing a vehicle trip;

the state comprises geo-coordinates of the vehicle and a pick-up time associated with the vehicle trip;

the state-action value comprises a cumulative reward; and

the input layers, the hidden layers, and the output layer are in a sequence and every two neighbor layers are associated with one or more weights.

13. The method of claim 12, wherein the neural network model is trained by: modeling the vehicle trips by passing the action inputs and state inputs through the hidden layers to obtain the output, each vehicle trip associated with a first state corresponding to an origin, a second state corresponding to a destination, an action corresponding to fulfilling a ride order from the origin to the destination, and a reward corresponding to fees for the ride; and

updating the weights to maximize the cumulative reward.

14. The method of claim 13, wherein modeling the vehicle trips comprises: modeling a first vehicle trip to obtain the second state associated with the first vehicle trip; and

searching from a spatio-temporal space to obtain an action to perform at the second state, the spatio-temporal space is within a spatial threshold from the second state.

15. The method of claim 13, wherein modeling the vehicle trips comprises: modeling a first vehicle trip to obtain the second state associated with the first vehicle trip; and

searching from a spatio-temporal space to obtain an action to perform at the second state, the spatio-temporal space is within a temporal threshold from the second state.

16. The method of claim 12, wherein:

data used for training the neural network model comprises (1 ) a plurality of the vehicle trips each associated with a measurement period, and (2) the data used for training the neural network model comprises one or more terminal states each associated with an end of the measurement period.

17. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform a ride order dispatching method, the method comprising:

obtaining, from a computing device, a current location of a vehicle;

inputting the current location of the vehicle and a time to a trained neural network model to obtain action information for the vehicle, the action information comprising: staying at the current location of the vehicle, re-positioning the vehicle, or accepting a ride order; and

transmitting the action information to the computing device to cause the vehicle to stay at the current location, re-position to another location, or accept the ride order by proceeding to a pick-up location of the ride order.

18. The storage medium of claim 17, wherein the neural network model comprises: an input layer comprising one or more action inputs and one or more state inputs;

one or more hidden layers; and

an output layer comprising a state-action value output.

19. The storage medium of claim 18, wherein:

the action comprises a destination and a drop-off time associated with performing a vehicle trip;

the state comprises geo-coordinates of the vehicle and a pick-up time associated with the vehicle trip;

the state-action value comprises a cumulative reward; and

the input layers, the hidden layers, and the output layer are in a sequence and every two neighbor layers are associated with one or more weights.

20. The storage medium of claim 19, wherein the neural network model is trained by:

modeling the vehicle trips by passing the action inputs and state inputs through the hidden layers to obtain the output, each vehicle trip associated with a first state corresponding to an origin, a second state corresponding to a destination, an action corresponding to fulfilling a ride order from the origin to the destination, and a reward corresponding to fees for the ride; and

updating the weights to maximize the cumulative reward.

Description:
SYSTEM AND METHOD FOR RIDE ORDER DISPATCHING

CROSS REFERENCE TO RELATED APPLICATION

[1] This application claims priority to U.S. Provisional Patent Application No. 62/555,879, filed September 8, 2017 and titled "SYSTEM AND METHOD FOR RIDE ORDER DISPATCHING," the entire content of which is incorporated herein by reference.

FIELD OF THE INVENTION

[2] This disclosure generally relates to methods and devices for ride order dispatching.

BACKGROUND

[3] A vehicle dispatch platform can automatically allocate transportation requests to corresponding vehicles for providing transportation services. Each vehicle driver provides and is rewarded for the transportation service. However, it has been challenging to determine an efficient allocation method that can maximize the gain for each vehicle driver.

SUMMARY

[4] Various embodiments of the present disclosure include systems, methods, and non-transitory computer readable media for ride order dispatching.

[5] According to one aspect, a ride order dispatching system comprises a processor, and a non-transitory computer-readable storage medium storing instructions that, when executed by the processor, cause the processor to perform a method. The method comprises: obtaining, from a computing device, a current location of a vehicle; inputting the current location of the vehicle and a time to a trained neural network model to obtain action information for the vehicle, the action information comprising: staying at the current location of the vehicle, re-positioning the vehicle, or accepting a ride order; and transmitting the action information to the computing device to cause the vehicle to stay at the current location, re-position to another location, or accept the ride order by proceeding to a pick-up location of the ride order. l [6] In some embodiments, the neural network model comprises a deep neural network and a reinforcement learning algorithm, and the deep neural network comprises two deep-Q networks.

[7] In some embodiments, the neural network model comprises: an input layer comprising one or more action inputs and one or more state inputs, one or more hidden layers, and an output layer comprising a state-action value output. The action comprises a destination and a drop-off time associated with performing a vehicle trip. The state comprises geo-coordinates of the vehicle and a pick-up time associated with the vehicle trip. The state-action value comprises a cumulative reward. The input layers, the hidden layers, and the output layer are in a sequence and every two neighbor layers are associated with one or more weights.

[8] In some embodiments, the neural network model is trained by: modeling the vehicle trips by passing the action inputs and state inputs through the hidden layers to obtain the output, each vehicle trip associated with a first state corresponding to an origin, a second state corresponding to a destination, an action corresponding to fulfilling a ride order from the origin to the destination, and a reward corresponding to fees for the ride; and updating the weights to maximize the cumulative reward.

[9] In some embodiments, modeling the vehicle trips comprises: modeling a first vehicle trip to obtain the second state associated with the first vehicle trip, and searching from a spatio-temporal space to obtain an action to perform at the second state, the spatio-temporal space is within a spatial threshold from the second state.

[10] In some embodiments, modeling the vehicle trips comprises: modeling a first vehicle trip to obtain the second state associated with the first vehicle trip, and searching from a spatio-temporal space to obtain an action to perform at the second state, the spatio-temporal space is within a temporal threshold from the second state.

[11] In some embodiments, data used for training the neural network model comprises (1 ) a plurality of the vehicle trips each associated with a measurement period, and (2) one or more terminal states each associated with an end of the measurement period. [12] According to another aspect, a computer-implemented method for ride order dispatching comprises: obtaining, from a computing device, a current location of a vehicle; inputting the current location of the vehicle and a time to a trained neural network model to obtain action information for the vehicle, the action information comprising: staying at the current location of the vehicle, re-positioning the vehicle, or accepting a ride order; and transmitting the action information to the computing device to cause the vehicle to stay at the current location, re-position to another location, or accept the ride order by proceeding to a pick-up location of the ride order.

[13] According to another aspect, a non-transitory computer-readable storage medium stores instructions that, when executed by a processor, cause the processor to perform a ride order dispatching method. The method comprises: obtaining, from a computing device, a current location of a vehicle; inputting the current location of the vehicle and a time to a trained neural network model to obtain action information for the vehicle, the action information comprising: staying at the current location of the vehicle, re-positioning the vehicle, or accepting a ride order; and transmitting the action information to the computing device to cause the vehicle to stay at the current location, re-position to another location, or accept the ride order by proceeding to a pick-up location of the ride order.

[14] According to another aspect, a method for ride order dispatching may comprise inputting information on a location of a vehicle and a time to a trained neural network model; and based on a policy generated from the trained neural network model, obtaining action information for the vehicle, the action information comprising: staying at a current position of the vehicle, re-positioning the vehicle, or accepting a ride order. In some embodiments, a non-transitory computer readable media may couple to a processor and comprise instructions that, when executed by the processor, cause the processor to preform various method described herein. The instructions may comprise the trained neural network model and the policy (e.g., the trained neural network model and the policy may be associated with memory locations in the media).

[15] These and other features of the systems, methods, and non-transitory computer readable media disclosed herein, as well as the methods of operation and functions of the related elements of structure and the combination of parts and economies of manufacture, will become more apparent upon consideration of the following description and the appended claims with reference to the accompanying drawings, all of which form a part of this specification, wherein like reference numerals designate corresponding parts in the various figures. It is to be expressly understood, however, that the drawings are for purposes of illustration and description only and are not intended as a definition of the limits of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

[16] Certain features of various embodiments of the present technology are set forth with particularity in the appended claims. A better understanding of the features and advantages of the technology will be obtained by reference to the following detailed description that sets forth illustrative embodiments, in which the principles of the invention are utilized, and the accompanying drawings of which:

[17] FIG. 1 illustrates an exemplary system for ride order dispatching, in accordance with various embodiments.

[18] FIG. 2 illustrates an exemplary system for ride order dispatching, in accordance with various embodiments.

[19] FIG. 3A illustrates an exemplary neural network model, in accordance with various embodiments.

[20] FIG. 3B illustrates an exemplary neural network model for ride order dispatching, in accordance with various embodiments.

[21] FIG. 3C illustrates an example action search for ride order dispatching, in accordance with various embodiments.

[22] FIG. 3D illustrates an exemplary algorithm for ride order dispatching, in accordance with various embodiments.

[23] FIG. 3E illustrates another exemplary algorithm for ride order dispatching, in accordance with various embodiments. [24] FIG. 3F illustrates mean Q-values on mini-batches for city A and city B, in accordance with various embodiments.

[25] FIG. 3G illustrates mean state-values by time for city A and city B, in accordance with various embodiments.

[26] FIG. 3H - FIG. 3K illustrate state-values by locations in city A and city B, in accordance with various embodiments.

[27] FIG. 3L illustrates mean episode reward comparison for city A and city B, in accordance with various embodiments.

[28] FIG. 4A illustrates a flowchart of an exemplary method for ride order dispatching, in accordance with various embodiments.

[29] FIG. 4B illustrates a flowchart of an exemplary method for ride order dispatching, in accordance with various embodiments.

[30] FIG. 5 illustrates a block diagram of an example computer system in which any of the embodiments described herein may be implemented.

DETAILED DESCRIPTION

[31] Vehicle platforms may be provided for transportation services. Such vehicle platform may also be referred to as a vehicle hailing or vehicle dispatching platform, accessible through devices such as mobile phones installed with a platform application. Via the application, users (ride requestors) can transmit transportation requests (e.g., a pick-up location, a destination, a current location of the user) to the vehicle platform. The vehicle platform may relay the requests to vehicle drivers based on various factors (e.g., proximity to the location of the requestor or the pickup location). The vehicle drivers can choose from the requests, and each can pick one to accept, fulfill the request, and be rewarded accordingly. After each trip, the vehicle driver may search for more requests or receive more requests from a push- based dispatching platform, and the results may vary depending on the demand for the vehicle service. For example, the results may return many requests if the vehicle is at a night life locale on a weekend night, or may return no request if the vehicle is at a far-flung area on a weekday evening. [32] Current transportation-providing drivers rely on experiences or make random decisions as whether to wait for a passenger, reposition to another location, or pick up an order. Often the driver may just accept any first available order without considering its impact to the overall income within that day. To provide a technical solution that at least mitigates the deficiencies of current practices, ride order systems and methods are disclosed. In addition to merely providing drivers with available ride orders, the vehicle platform may automatically determine reward- maximizing strategies to provide to the drivers, for example suggesting the driver to wait, re-position, or accept a trip.

[33] The disclosed systems and methods may train a machine learning model based on historical data such as various trips and rewards with respect to time and location, to obtain an optimal policy that surpasses the decision making policy reflected in the historical data in terms of reward maximization. Based on the machine-generated policy and ride orders dispatched accordingly, the disclosed systems and methods can help the vehicle drivers to obtain more earnings each day than simply relying on personal experiences, thus improving their efficiency of work.

[34] The machine learning model used by the disclosed systems and methods may comprise a combination of modified neural network (e.g., deep neural network (DNN)) and reinforcement learning (RL) algorithm. In a regular DNN, the correct inputs and outputs need to be presented, and sub-optimal actions need to be corrected. However, in situations such as ride order dispatching, the correct inputs and outputs (e.g., correct dispatching actions at all locations) may be too complex, and all possible states and actions (e.g., vehicle locations and ride order dispatching) may be too numerous to gather. In some embodiments, as described in more details below, the combination with RL algorithm obviates the requirements for correct inputs and outputs and sub-optimal action corrections, thus harnessing the power of DNN in a scalable fashion.

[35] Various embodiments of the present disclosure include systems, methods, and non-transitory computer readable media for determining and dispatching ride order or otherwise provide a sequence of decisions that can maximize the total revenue of a vehicle driver for a given time period (e.g., one day). In some

embodiments, a ride order dispatching system comprises a processor, and a non- transitory computer-readable storage medium storing instructions that, when executed by the processor, cause the processor to perform a method. The method comprises: obtaining, from a computing device, a current location of a vehicle;

inputting the current location of the vehicle and a time to a trained neural network model to obtain action information for the vehicle, the action information comprising: staying at the current location of the vehicle, re-positioning the vehicle, or accepting a ride order; and transmitting the action information to the computing device to cause the vehicle to stay at the current location, re-position to another location, or accept the ride order by proceeding to a pick-up location of the ride order.

[36] In some embodiments, a method for ride order dispatching may comprise inputting information on a location of a vehicle and a time (e.g., a time-of-day) to a trained neural network model; and based on a policy generated from the trained neural network model, obtaining action information for the vehicle. The action information may comprise: staying at a current position of the vehicle, re-positioning the vehicle, accepting a ride order, or other actions. The neural network model comprises a deep neural network and reinforcement learning algorithm. The neural network model comprises one or more action inputs, one or more state inputs, and a state-action value output.

[37] FIG. 1 illustrates an exemplary system 100 for dispatching ride order, in accordance with various embodiments. As shown in FIG. 1 , the exemplary system 100 may comprise at least one computing system 102. The system 102 may be implemented on or as various devices such as mobile phone, tablet, server, computer, wearable device (smart watch), etc. The system 102 above may be installed with appropriate software (e.g., platform program, etc.) and/or hardware (e.g., wires, wireless connections, etc.) to access other devices of the system 100. The computing system 102 may include one or more processors 104, one or more memories 106, and one or more network ports 105. The memory 106 may be non- transitory and computer-readable. The memories 106 may store instructions that, when executed by the one or more processors 104, cause the one or more processors 104 to perform various operations described herein. The one or more processors 104 and/or the one or more memories 106 may be implemented as one or more circuits described below with reference to FIG. 5. Further descriptions of the network ports 105 can also be referred to the network/communication interface 518 in FIG. 5

[38] The system 100 may include one or more data stores (e.g., a data store 108) and one or more computing devices (e.g., a computing device 109) that are accessible to the system 102. In some embodiments, the system 102 may be configured to obtain data (e.g., location, time, and fees for multiple vehicle

transportation trips) from the data store 108 (e.g. , a database or dataset of historical transportation trips) and/or the computing device 109 (e.g., a computer, a server, a mobile phone used by a driver or passenger that captures transportation trip information such as time, location, and fees). The system 102 may use the obtained data to train the model for ride order dispatching. The location may comprise GPS (Global Positioning System) coordinates of a vehicle.

[39] The system 100 may further include one or more computing devices (e.g., computing devices 1 10 and 1 1 1 ) coupled to the system 102. The computing devices 1 10 and 1 1 1 may comprise devices such as cellphone, tablet, computer, wearable device (smart watch), etc. The computing devices 1 10 and 1 1 1 may transmit or receive data to or from the system 102. Thus, in various embodiments, the system 102 may be referred to as a ride order dispatching system that comprises one or more network ports to communicate with user terminals (e.g., computing devices 1 10 and 1 1 1 ) registered with an online transportation service platform, and one or more circuits coupled to the one or more network ports. During operation the circuits may perform various methods and steps described herein.

[40] In some embodiments, the system 102 may implement an online information or service platform. The service may be associated with vehicles such as cars, bikes, boats, and airplanes, and the platform may be referred to as a vehicle (service hailing or ride order dispatching) platform. The platform may accept requests for transportation, identify vehicles to fulfill the requests, arrange for pick-ups, and process transactions. For example, a user may use the computing device 1 10 (e.g., a mobile phone installed with a software application associated with the platform) to request transportation from the platform. The system 102 may receive the request and relay it to various vehicle drivers, for example, by posting the request to mobile phones carried by the drivers. A vehicle driver may use the computing device 1 1 1 (e.g., another mobile phone installed with the application associated with the platform) to accept the posted transportation request and obtain pick-up location information. Fees such as transportation fees can be transacted among the system 102 and the computing devices 1 10 and 1 1 1 . Some platform data may be stored in the memory 106 or retrievable from the data store 108 and/or the computing devices 109, 1 10, and 1 1 1 . For example, for each trip, the location of the origin and destination (e.g., transmitted by the computing device 1 1 1 ), the fee, and the time can be obtained by the system 102.

[41] In some embodiments, the system 102 and the one or more of the computing devices (e.g., the computing device 109) may be integrated in a single device or system. Alternatively, the system 102 and the one or more computing devices may operate as separate devices. The data store(s) may be anywhere accessible to the system 102, for example, in the memory 106, in the computing device 109, in another device (e.g., network storage device) coupled to the system 102, or another storage location (e.g., cloud-based storage system, network file system, etc.), etc. Although the system 102 and the computing device 109 are shown as single components in this figure, it is appreciated that the system 102 and the computing device 109 can be implemented as single devices or multiple devices coupled together. The system 102 may be implemented as a single system or multiple systems coupled to each other. In general, the system 102, the computing device 109, the data store 108, and the computing device 1 10 and 1 1 1 may be able to communicate with one another through one or more wired or wireless networks (e.g., the Internet) through which data can be communicated. Various aspects of the system 100 are described below in reference to FIG. 2 to FIG. 5.

[42] FIG. 2 illustrates an exemplary system 200 for dispatching ride order, in accordance with various embodiments. The operations shown in FIG. 2 and presented below are intended to be illustrative.

[43] In various embodiments, the system 102 may perform the following:

obtaining, from a computing device, a current location of a vehicle; inputting the current location of the vehicle and a time to a trained neural network model to obtain action information for the vehicle, the action information comprising: staying at the current location of the vehicle, re-positioning the vehicle, or accepting a ride order; and transmitting the action information to the computing device to cause the vehicle to stay at the current location, re-position to another location, or accept the ride order by proceeding to a pick-up location of the ride order.

[44] In some embodiments, the system 102 may obtain data 202 (e.g., training data comprising the state, action, and reward described below for historical trips) from the data store 108 and/or the computing device 109. The historical trips may be completed by various vehicles, and associated trip information such as trip origin, destination, and fee may be collected from devices such as the system 102, computing device 1 10, computing device 1 1 1 , etc. The obtained data 202 may be stored in the memory 106. The system 102 may train a model with the obtained data 202 or train an algorithm with the obtained data 202 to learn a model for dispatching ride order. The algorithm of learning a model without providing a model may be referred to as model-free reinforcement learning algorithm.

[45] The computing device 1 1 1 may transmit query 204 to the system 102. The computing device 1 1 1 may be associated with a driver of a service vehicle including, for example, taxis, service-hailing vehicle, etc. The query 204 may comprise information such as a current location of the vehicle, a current time, etc.

Alternatively, the query 204 may not comprise the location of the vehicle and the current time. In response to the query 204, the system 102 may obtain the location of the vehicle from the computing device 1 1 1 and obtain the current time from any source. Accordingly, the system 102 may send data 207 to the computing device 1 1 1 or one or more other devices. The data 207 may comprise an instruction or recommendation for an action, such as waiting at the current position, re-positioning to another location, accepting a new request, etc. The data 207 may be displayed or played on the computing device 1 1 1 , for example, as a visual and/or audio message. Alternatively, the computing device 1 1 1 may be an in-vehicle processor which effectuates motion control of the vehicle according to the data 207.

[46] As mentioned, the machine learning algorithm used by the disclosed systems and methods may comprise a combination of modified (e.g., deep neural network (DNN)) and reinforcement learning (RL) algorithm. The RL algorithm may be model-free with function approximation, e.g., in a deep Q-network (DQN) framework, where the state-action value function is approximated by a multi-layer neural network or multi-layer perceptron (MLP). A resulting Q-network can be used as a component in a multi-driver dispatching system. In various embodiments, to produce an optimal policy that governs the decision-making at each step, a corresponding state-action value function (described below) of the driver may be estimated. This function can show how good a decision made at a particular location and time of the day with respect to the long-term objective. The machine learning algorithm or a system or device that at least partially implements the machine learning algorithm may be referred to as an "agent." For training, the agent takes an action in a defined environment, a reward can be assigned for a given behavior (e.g., a ride fee for fulfilling a ride order, nothing for waiting) assuming that the vehicle driver follows the determination of the agent, and over time through reinforcement learning algorithm, the agent can learn to reproduce that behavior to maximize the rewards and help the vehicle driver make the best decisions.

[47] In deep neural networks, neurons may serve as the basic building block. A neuron may receive an input signal (e.g., input data), process it using a logistic computation function, and transmit an output signal (e.g., output data) depending on the computation outcome. When these neurons are arranged into networks of neurons, they are termed as neural networks. Each column of neurons in the network is called a layer, and a network can have multiple layers with multiple neurons in each layer. Network with single neuron is called perceptron and network with multiple layers of neurons is called multi-layer perceptron (MLP). For example, a two hidden layer MLPs (layer Ai and layer A2) are shown in FIG. 3B, where the input layer comprises the inputs (state inputs and action inputs) to the network. The input layer is also called the visible layer because this may be the only exposed part of the network. Hidden layers derive features from the input layer at different scales or resolutions to form high-level features and output a value or a vector of values at the output layer. At each hidden layer, the network may compute the features as:

[48] Ai = f (Wi * X)

[49] A 2 = f (W 2 * Ai) [51] Where, f is the function which takes the combination of weights (e.g., Wi , W2, W3) and outputs at the previous layer and outputs a value. Function f can be identical for all the hidden layers or can be different. A1 , A2, and Q are the successive outputs of first hidden layer, second hidden layer, and the final output layer. For a given row of data X as an input to network, the network may process the input to obtain A1 , A2 and finally obtain the predicted output Q. This can be called forward pass.

[52] The weights of the neural network need to be updated by training to accurately reflect the decision making process. In a regular DNN, the predicted output Q can be compared with an expected output (e.g., independently verified result, manually obtained result, cross-checked result) to compute an error using a loss function. This error is then propagated back through the network using a backpropagation algorithm to update the weights Wi, W2, W3 for each layer according to stochastic gradient descent, one layer at a time. This can be called backward pass. In some embodiments, RL algorithm is used in combination with DNN to compute a loss function based on target and prediction and based on which, update the weights of neural network using backpropagation, as detailed below.

[53] A RL algorithm builds on a Markov decision process (MDP), and the environment for ride order dispatching can be formulated as a MDP. In various embodiments, the agent interacts with the environment in discrete steps. At each step, the agent executes an action (e.g., waiting, re-positioning, accepting a ride order), and correspondingly from the environment, the agent receives an observation (e.g., a reward and a next state described below). That is, the agent chooses an action from a set of available actions, and the agent moves to a new state, and the reward associated with the transition is determined. In one exemplary transition, the driver is matched to a trip order, spends time to travel to the trip origin location, and the trip moves the driver to the destination location and time, for which the driver earns an immediate reward (trip fee) from this transition. The goal of the agent is to collect as much reward as possible. To further describe the MDP formulation, some of the terminologies are described below. The disclosed MDP formulation uses more granular state and action information and learns a state-action value function. [54] State, s: the geo-coordinates of the driver and time (e.g., time-of-day in seconds) when the driver picks up a trip order. For example, s = (I, t), where Ί" is the GPS coordinates pair (latitude, longitude), and "t" is time, "s" may be different from the actual origin of the transportation trip corresponding to the picked trip order, "s" may contain additional features that characterize the spatio-temporal space (I, t) , e.g., statistics of demand, supply, and order fulfillment within the vicinity of (I, t), denoted as "f . For example, s could be extended as (I, t, f). Further, time for weekday and weekend can be differentiated due to different transportation demands and patterns.

[55] Action, a: the action is assignment (e.g., passenger pick-up and

transportation assignment) of a particular trip to the driver, defined by the trip destination and drop-off time. Hence, a state-action pair is (so, si ).

[56] Reward, r: the total fee collected for the trip.

[57] Episode: one complete day, from 0:00am to 23:59pm. Hence, a terminal state is a state with t component corresponding to 23:59pm. Alternatively, other episode definitions for a time frame can be used.

[58] State-action value function, Q(s, a): expected cumulative reward that the driver will gain till the end of an episode if the vehicle driver starts at state s and takes an action a. Here, Q(s, a) = = s,A 0 = a], where S, A, and R are stochastic variable version of s, a, and r. T is the number of steps till the terminal state, and γ is the discount factor for the future rewards. In the training of the disclosed systems and methods, γ can be set, for example, to 0.9. The state- action value function can be also referred to as Q function or Q value. This Q-value function gives the expected total reward for performing action "a" at state "s," under policy V (described below), with discount factor "γ."

[59] State value function, V(s): expected cumulative reward that the driver will gain till the end of an episode if the driver starts at state "s." Assuming that a greedy policy with respect to the Q function is used, the state value V(s) = max aeA Q(s, a). [60] Policy, n(a\s): a function that maps a state s to a distribution over the action space (stochastic policy) or a particular action (deterministic policy). The greedy policy with respect to a learned Q(s, a) is given by n(s) = max a Q(s, a).

[61] In various embodiments, action search can be added to an existing DQN framework to obtain an improved neural network architecture. FIG. 3A illustrates an example DQN without action search. The DQN assumes a small discrete action space and uses only the state as input and multiple outputs corresponding to the action value for each action (e.g., Q(s, a=1 ), Q(s, a=2), and Q(s, a=3)). The maximum of the outputs is used to update the neural network.

[62] FIG. 3B illustrates an exemplary neural network model (DQN with action search) for ride order dispatching, in accordance with various embodiments. In some embodiments, the neural network model comprises: an input layer comprising one or more action inputs and one or more state inputs, one or more hidden layers, and an output layer comprising a state-action value output. The action comprises a destination and a drop-off time associated with performing a vehicle trip. The state comprises geo-coordinates of the vehicle and a pick-up time associated with the vehicle trip. The state-action value comprises a cumulative reward. The input layers, the hidden layers, and the output layer are in a sequence and every two neighbor layers are associated with one or more weights. The exemplary DQN with action search for ride order dispatching shown in FIG. 3B may be applied to the various machine learning algorithms or models described herein. In the architecture shown in FIG. 3B, both state "s" and action "a" are used as the network inputs to obtain the Q-value as the single output. The hidden layers can be fully-connected layers or convolutional layers, depending on the application. There can be many more hidden layers than those two shown in FIG. 3B. A pseudo code (Algorithm 1 ) for training is provided in FIG. 3D. The description of DQN below may refer to the DQN in FIG. 3B.

[63] In some embodiments, the neural network model is trained by: modeling the vehicle trips by passing the action inputs and state inputs through the hidden layers to obtain the output, each vehicle trip associated with a first state corresponding to an origin, a second state corresponding to a destination, an action corresponding to fulfilling a ride order from the origin to the destination, and a reward corresponding to fees for the ride; and updating the weights to maximize the cumulative reward. [64] The DQN (e.g., embodied in the state-action value function) is to be trained with training data for various episodes until, for example, the state-action value function converges. The network can be updated after each taken action or in mini- batches of, for example, a few actions taken. Each mini-batch can be viewed as a small set of sample points on the state-action (Q) value function. Such mini-batches would be highly correlated. Previous experiences can be kept in memory (e.g., the memory 106 described above), and after each action taken, a mini-batch of experiences can be drawn from that memory to perform the update. In one example, the mini-batch update through backpropagation solves a bootstrapped regression problem with the following loss function in the DQN framework:

[65] (<2(s 0 , α\θ) - 0 , ά) - γ max Q(s lt a'|<9')) 2 (1 )

a'eA

[66] where θ' comprises the weights for the Q-network of the previous iteration (similar to the weights Wi , W2 described above for the corresponding layer), and A is the action space. Here, Q(s Q , α\θ) may represent the prediction: the approximated Q function of the neural network with predicted weights Θ; and r(s 0 , a) +

y max (2(s 1 , α'\θ') may represent the targets. The loss function can be used to a'eA

update the neural network, for example, θ' can be updated with Θ.

[67] To further improve training stability, double-DQN can be used. For example, a target Q-network Q is maintained and synchronized periodically with the original Q- network. The targets in (1 ) is modified so that the argmax is evaluated by the target network:

[68] r(s 0 , a) + y$(s 1 , arg max Q(s lt α'\θ') \θ') (2)

a'eA

[69] That is, the deep neural network may comprise two deep-Q networks. The targets r(s 0 , a) + y max Q(s 1 , α'\θ') in (1 ) can be replaced by (2), and the difference a'eA

between (2) and Q(s Q , α\θ) can be used to update the neural network.

[70] In some embodiments with respect to data training, different from the vanilla DQN algorithm, no simulation environment may be involved in training, and the agent is trained on historical data. For example, historical trips data can be used as training transitions (training data). Since DQN is an off-policy algorithm, learning the value of the optimal policy can be performed independently of the agent's online actions to generate the training data. Each trip x defines a transition of the agent's states (so, a, r, si), where current state so = (lo, to) comprises the vehicle driver's location and time when the action is performed, the action a comprises the assigned trip, the reward is the total fee collected for this trip, and the next state si = (h, ti) is the drop-off location and time. Since an episode is defined by a day, si can be set in all those transitions where the trip crosses midnight to be terminal state. All state vectors may be pre-processed, for example, normalized with their population mean and standard deviation. These transitions (experiences) can be stored in a replay memory, and each iteration samples a mini-batch from this replay memory. For use as the training data, the transitions may not be generated from a simulator and may not form complete episodes. Thus, data used for training the neural network model may comprise: (a) a plurality of the vehicle trips each associated with a

measurement period, and (b) one or more terminal states each associated with an end of the measurement period.

[71] In some embodiments with respect to action search, the action search can be incorporated to the disclosed system and methods, and an action takes the form a = (I, t). Since both the GPS coordinates and time are more or less continuous, computing the max-Q term in (1 ) exactly may not be tractable. In addition, the time (t-component) has dependency on the location (l-component) as it reflects the duration of the trip. Thus, random sampling from the action space may not be appropriate. In some embodiments, an approximation scheme can be used for computing action "a" by constructing an approximate feasible space for the actions, i4(s), which makes explicit the dependency of the action space to the state "s" where the search starts. Instead of searching through all valid actions, the historical trips originating from the vicinity of s (e.g., within a threshold distance from s) can be searched:

[72] A(s) = {x„|x G X, B(x So ) = B(s)} (3)

[73] where χ is the set of all trips, and 5(s) is a discretized spatio-temporal bin that s falls into. For spatial discretization, the hexagon bin system can be used, and here, a hexagon bin can be represented by its center point coordinates. x s is the s 0 component of the trip x. For a larger search space, more computation is required for evaluating the value network at each action point. The number of actions allowed in the action search space can be tuned, and random sampling can be performed without replacement if necessary. The same search procedure can be used for policy evaluation, where the driver's trajectory for the day is simulated using historical trips data. Therefore, in some embodiments, modeling the vehicle trips comprises: modeling a first vehicle trip to obtain the second state associated with the first vehicle trip, and searching from a spatio-temporal space to obtain an action to perform at the second state, the spatio-temporal space is within a spatial threshold and/or a temporal threshold from the second state.

[74] In some embodiments with respect to expanded action search, due to training data sparsity in certain spatio-temporal regions, e.g., remote areas in early morning, the above-described action search may return an empty set. Therefore, in some embodiments, an expanded action search can be performed in both spatial and temporal spaces. In one example, a first search direction is to stay at the last drop-off location and wait for a period of time, which corresponds to keeping the I- component (si) constant and advancing st, till one of the following happens with s' being the searched state: (1 ) i (s')is non-empty, (2) a terminal state is reached, or (3) s t ' exceeds the wait-time limit. For (1 ), A(s') is returned; for (2), the terminal state is returned; and for (3), s' is returned. In another example, a second search direction is through spatial expansion by searching the neighboring hexagon bins of s. The expanded action search may be in a layered manner, as shown in FIG. 3C. In FIG. 3C, the circle lines cover the first two layers of neighboring hexagon bins of lo, and the arrows represent searches to hexagon bin centered at h (first layer) at time ti > to and hexagon bin centered at I2 at time .2 > t-i. The spatio-temporal bins covered by the inner red circle are 5'((1 0 , t 0 ), 1).

[75] For each layer L of hexagon bins, the search can be performed within the appropriate time interval to take into account the travel time required to reach the target hexagon bin from s. The travel time estimation can be obtained from a map service. The layer L neighboring spatio-temporal bins of s can be denoted by

5'(s, L), and the set of historical trips originating from any of the bins in 5'(s, L) can be denoted by: [76] A'(s, L) = {x Si \x E X, B(x So ) E B'(s, L)} (4)

[77] The increase of L in the second search direction is stopped when A(s, L) is non-empty, and A(s, L) is returned. Otherwise, B s, L max ), the hexagon bins' center points and their associated time components, are returned. Algorithm 2 in FIG. 3E summarizes the action search.

[78] In some embodiments with respect to terminal state values, based on the definition of terminal state described above, Q(s, a) with st near the end of the episode horizon would be close to zero regardless si. Thus, transitions with si being a terminal state may be added to the replay buffer at the very beginning of training to help getting the terminal state-action values right early in training. This can help improve the model accuracy because the target values for the states so's in the mini- batch updates of DQN are computed through bootstrapping on the values of states that are temporally after them. Since the training samples with a terminal state may form a small percentage of the entire data set, a uniform sampling would cause the values of many states far away from the terminals to be supervised with the incorrect targets, hence slowing down the learning process. Therefore, in some embodiments, data used for the training the neural network model comprises (1 ) a plurality of the vehicle trips each associated with a measurement period (e.g., episode), and (2) one or more terminal states each associated with an end of the measurement period.

[79] In some embodiments with respect to experience augmentation, the original training data is the experience generated by the given historical policy. The historical policy may not explore the trajectory space well and may contain very few rare but important cases, such as transitions that require long waiting time or repositioning without a passenger before a trip starts. Such transitions are typical experiences when the driver is at a state, where few trips historically originated from. If the agent is only trained on the original trips data, it would not learn to make good decisions should the driver go into a rare state in the future (e.g., when the vehicle goes to an area where very few people request vehicle services and tries to pick up a vehicle request). Therefore, the original training experience may be supplemented with transitions obtained through action search. For example, for each time bin, a set of locations within the geographical boundary under consideration are randomly sampled. Accordingly, the action search and the expanded action search described above can be performed on the randomly sampled states, and the resulting transitions which require expanded action search can be added to the replay memory.

[80] In some embodiments with respect to policy evaluation, the trained neural network provides a policy that beats the existing decision-making data in terms of cumulative reward, and the policy can be evaluated by the following method. Since the transitions data is historical and may not necessarily form complete episodes, a single-driver simulator can be built from the past trips data for evaluating the policy generated from the learned value function. For example, it can be assumed that after a driver drops off a passenger at the destination, and from the vicinity of the destination, the driver would be assigned a new trip request. The search space can be augmented as necessary following the expanded action search described above to cover the cases where there are no historical trip around the last drop-off area. The next move is selected by the given policy from the action search output, which may comprise fee-generating trips, wait actions, or re-position actions. The reward associated with the action is the actual trip fee, if the action involves a historical trip. Otherwise, the reward is zero (for waiting or repositioning). The simulation can be run for multiple episodes (days), and the cumulative reward gained can be computed and averaged over the episodes.

[81] In some simulations, a first policy (a greedy policy with respect to the learned state-action value function, the greedy policy may be a policy that fully exploits the learnt Q values) and a second policy (a policy that takes random action within the action search space) may be evaluated. The second policy may reflect the policy that generated the historical data. And the first policy has shown higher (e.g., 10-20%) gain than the second policy (also the historical policy). Thus, the first policy can be used to implement automatic ride order (vehicle request) dispatching to help vehicle drivers maximize their earnings.

[82] In one example, a neural network for Q value function is trained with one month of Express Car weekday trips data from two mid-sized cities (city A and city B). Each mini-batch can be viewed as a small set of sample points on the Q (state- action) value function. A discount factor of 0.9 may be used. All state vectors with their population mean and standard deviation may be normalized. This pre- processing may be necessary for a stable training. As shown in FIG. 3F, after 30000 episodes, the Q function has converged. FIG. 3G shows the mean V(s) with one standard deviation over the center points for each time bin and for all location bins. The value network correctly captures the trend in the temporal space: the average value monotonically decreases over time, and the value at the final time bin is close to zero.

[83] In some embodiments, for the spatial trend captured by the value network. FIG. 3H to FIG. 3K illustrate the state-values by location in the test city for 4am, 8am, 2pm, and 8pm respectively. The grey scale coding is not comparable across plots.

[84] In some embodiments, the cumulative rewards from policy evaluation on two different policies for city A and city B are compared in FIG. 3L. The trips data backing the policy evaluation is from the same two cities in a different month. One is greedy with respect to the learned state-action value function. The other one takes a random action within the action search space. The second policy more or less reflects the policy that generated the historical data. The policy evaluation described above is used. The average episode reward is computed over 10 runs of 100 episodes with random starts. The average episode reward as shown in FIG. 3L for the policy learned by DQN is about 10% to 20% higher than the historical policy.

[85] As such, the disclosed systems and methods may automate instructions for transportation-providing vehicles, through a combination of software and hardware improvement. The benefit is shown to be greater than historical policies.

[86] FIG. 4A illustrates a flowchart of an exemplary method 400, according to various embodiments of the present disclosure. The method 400 may be

implemented in various environments including, for example, the system 100 of FIG. 1. The exemplary method 400 may be implemented by one or more

components of the system 102 (e.g., the processor 104, the memory 106) or the computing device 1 1 1 (e.g., a mobile phone associated with a vehicle driver). The exemplary method 400 may be implemented by multiple systems similar to the system 102. The operations of method 400 presented below are intended to be illustrative. Depending on the implementation, the exemplary method 400 may include additional, fewer, or alternative steps performed in various orders or in parallel.

[87] At block 402, information on a location of a vehicle and a time (e.g., a time when the vehicle starts to look for ride orders or after fulfilling a ride order) may be input to a trained neural network algorithm. At block 404, based on a policy generated from the trained neural network algorithm, action information for the vehicle may be obtained. For example, the action information may comprise: staying at a current position of the vehicle (e.g., when a ride order is likely to be received at the current location soon), re-positioning the vehicle (e.g., to another place that a ride order or a more rewarding ride order is more likely), or accepting a ride order (e.g., when one or more rider orders are currently available). In some embodiments, the neural network algorithm comprises a deep neural network and reinforcement learning algorithm. The neural network algorithm comprises one or more action inputs, one or more state inputs, and a state-action value output.

[88] FIG. 4B illustrates a flowchart of an exemplary method 450, according to various embodiments of the present disclosure. The method 450 may be

implemented in various environments including, for example, the system 100 of FIG. 1. The exemplary method 450 may be implemented by one or more

components of the system 102 (e.g., the processor 104, the memory 106). The exemplary method 450 may be implemented by multiple systems similar to the system 102. The operations of method 450 presented below are intended to be illustrative. Depending on the implementation, the exemplary method 450 may include additional, fewer, or alternative steps performed in various orders or in parallel.

[89] Block 452 may comprise obtaining, from a computing device, a current location of a vehicle, the computing device being one of the user terminals. Block 454 may comprise inputting the current location of the vehicle and a time to a trained neural network model to obtain action information for the vehicle, the action information comprising: staying at the current location of the vehicle, re-positioning the vehicle, or accepting a ride order. Block 456 may comprise transmitting the action information to the computing device to cause the vehicle to stay at the current location, re-position to another location, or accept the ride order by proceeding to a pick-up location of the ride order.

[90] In some embodiments, the neural network model comprises a deep neural network and a reinforcement learning algorithm, and the deep neural network comprises two deep-Q networks.

[91] In some embodiments, the neural network model comprises: an input layer comprising one or more action inputs and one or more state inputs, one or more hidden layers, and an output layer comprising a state-action value output. The action comprises a destination and a drop-off time associated with performing a vehicle trip. The state comprises geo-coordinates of the vehicle and a pick-up time associated with the vehicle trip. The state-action value comprises a cumulative reward. The input layers, the hidden layers, and the output layer are in a sequence and every two neighbor layers are associated with one or more weights.

[92] In some embodiments, the neural network model is trained by: modeling the vehicle trips by passing the action inputs and state inputs through the hidden layers to obtain the output, each vehicle trip associated with a first state corresponding to an origin, a second state corresponding to a destination, an action corresponding to fulfilling a ride order from the origin to the destination, and a reward corresponding to fees for the ride; and updating the weights to maximize the cumulative reward.

[93] In some embodiments, modeling the vehicle trips comprises: modeling a first vehicle trip to obtain the second state associated with the first vehicle trip, and searching from a spatio-temporal space to obtain an action to perform at the second state, the spatio-temporal space is within a spatial threshold from the second state.

[94] In some embodiments, modeling the vehicle trips comprises: modeling a first vehicle trip to obtain the second state associated with the first vehicle trip, and searching from a spatio-temporal space to obtain an action to perform at the second state, the spatio-temporal space is within a temporal threshold from the second state.

[95] In some embodiments, data used for training the neural network model comprises (1 ) a plurality of the vehicle trips each associated with a measurement period, and (2) one or more terminal states each associated with an end of the measurement period.

[96] The techniques described herein are implemented by one or more special- purpose computing devices. The special-purpose computing devices may be hardwired to perform the techniques, or may include circuitry or digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, server computer systems, portable computer systems, handheld devices, networking devices or any other device or combination of devices that incorporate hard-wired and/or program logic to implement the techniques.

Computing device(s) are generally controlled and coordinated by operating system software. Conventional operating systems control and schedule computer processes for execution, perform memory management, provide file system, networking, I/O services, and provide a user interface functionality, such as a graphical user interface ("GUI"), among other things.

[97] FIG. 5 is a block diagram that illustrates a computer system 500 upon which any of the embodiments described herein may be implemented. The system 500 may correspond to the system 102 described above. The computer system 500 includes a bus 502 or other communication mechanism for communicating information, one or more hardware processors 504 coupled with bus 502 for processing information. Hardware processor(s) 504 may be, for example, one or more general purpose microprocessors. The processor(s) 504 may correspond to the processor 104 described above.

[98] The computer system 500 also includes a main memory 506, such as a random access memory (RAM), cache and/or other dynamic storage devices, coupled to bus 502 for storing information and instructions to be executed by processor(s) 504. Main memory 506 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor(s) 504. Such instructions, when stored in storage media accessible to processor(s) 504, render computer system 500 into a special-purpose machine that is customized to perform the operations specified in the instructions. The computer system 500 further includes a read only memory (ROM) 508 or other static storage device coupled to bus 502 for storing static information and

instructions for processor(s) 504. A storage device 510, such as a magnetic disk, optical disk, or USB thumb drive (Flash drive), etc., is provided and coupled to bus 502 for storing information and instructions. The main memory 506, the ROM 508, and/or the storage 510 may correspond to the memory 106 described above.

[99] The computer system 500 may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system 500 to be a special-purpose machine. According to one

embodiment, the techniques herein are performed by computer system 500 in response to processor(s) 504 executing one or more sequences of one or more instructions contained in main memory 506. Such instructions may be read into main memory 506 from another storage medium, such as storage device 510. Execution of the sequences of instructions contained in main memory 506 causes processor(s) 504 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions.

[100] The main memory 506, the ROM 508, and/or the storage 510 may include non-transitory storage media. The term "non-transitory media," and similar terms, as used herein refers to media that store data and/or instructions that cause a machine to operate in a specific fashion. Such non-transitory media may comprise nonvolatile media and/or volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 510. Volatile media includes dynamic memory, such as main memory 506. Common forms of non-transitory media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a F LAS H-E PROM, NVRAM, any other memory chip or cartridge, and networked versions of the same.

[101] The computer system 500 also includes a network/communication interface 518 coupled to bus 502. Communication interface 518 provides a two-way data communication coupling to one or more network links that are connected to one or more local networks. The communication interface 518 may be implemented as one or more network ports. For example, communication interface 518 may be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 518 may be a local area network (LAN) card to provide a data communication connection to a

compatible LAN (or WAN component to communicated with a WAN). Wireless links may also be implemented. In any such implementation, communication interface 518 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.

[102] The computer system 500 can send messages and receive data, including program code, through the network(s), network link and communication interface 518. In the Internet example, a server might transmit a requested code for an application program through the Internet, the ISP, the local network and the communication interface 518.

[103] The received code may be executed by processor(s) 504 as it is received, and/or stored in storage device 510, or other non-volatile storage for later execution.

[104] Each of the processes, methods, and algorithms described in the preceding sections may be embodied in, and fully or partially automated by, code modules executed by one or more computer systems or computer processors comprising computer hardware. The processes and algorithms may be implemented partially or wholly in application-specific circuitry.

[105] The various features and processes described above may be used independently of one another, or may be combined in various ways. All possible combinations and sub-combinations are intended to fall within the scope of this disclosure. In addition, certain method or process blocks may be omitted in some implementations. The methods and processes described herein are also not limited to any particular sequence, and the blocks or states relating thereto can be performed in other sequences that are appropriate. For example, described blocks or states may be performed in an order other than that specifically disclosed, or multiple blocks or states may be combined in a single block or state. The exemplary blocks or states may be performed in serial, in parallel, or in some other manner. Blocks or states may be added to or removed from the disclosed exemplary embodiments. The exemplary systems and components described herein may be configured differently than described. For example, elements may be added to, removed from, or rearranged compared to the disclosed exemplary embodiments.

[106] The various operations of exemplary methods described herein may be performed, at least partially, by an algorithm. The algorithm may be comprised in program codes or instructions stored in a memory (e.g., a non-transitory computer- readable storage medium described above). Such algorithm may comprise a machine learning algorithm. In some embodiments, a machine learning algorithm may not explicitly program computers to perform a function, but can learn from training data to make a predictions model that performs the function.

[107] The various operations of exemplary methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented engines that operate to perform one or more operations or functions described herein.

[108] Similarly, the methods described herein may be at least partially processor- implemented, with a particular processor or processors being an example of hardware. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented engines. Moreover, the one or more processors may also operate to support performance of the relevant operations in a "cloud computing" environment or as a "software as a service" (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an Application Program Interface (API)).

[109] The performance of certain of the operations may be distributed among the processors, not only residing within a single machine, but deployed across a number of machines. In some exemplary embodiments, the processors or processor- implemented engines may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other exemplary embodiments, the processors or processor-implemented engines may be distributed across a number of geographic locations.

[110] Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated.

Structures and functionality presented as separate components in exemplary configurations may be implemented as a combined structure or component.

Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.

[111] Although an overview of the subject matter has been described with reference to specific exemplary embodiments, various modifications and changes may be made to these embodiments without departing from the broader scope of embodiments of the present disclosure. Such embodiments of the subject matter may be referred to herein, individually or collectively, by the term "invention" merely for convenience and without intending to voluntarily limit the scope of this application to any single disclosure or concept if more than one is, in fact, disclosed.

[112] The embodiments illustrated herein are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed. Other

embodiments may be used and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. The Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.

[113] Any process descriptions, elements, or blocks in the flow diagrams described herein and/or depicted in the attached figures should be understood as potentially representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process. Alternate implementations are included within the scope of the embodiments described herein in which elements or functions may be deleted, executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those skilled in the art.

[114] As used herein, the term "or" may be construed in either an inclusive or exclusive sense. Moreover, plural instances may be provided for resources, operations, or structures described herein as a single instance. Additionally, boundaries between various resources, operations, engines, and data stores are somewhat arbitrary, and particular operations are illustrated in a context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within a scope of various embodiments of the present disclosure. In general, structures and functionality presented as separate resources in the exemplary configurations may be implemented as a combined structure or resource. Similarly, structures and functionality presented as a single resource may be implemented as separate resources. These and other variations, modifications, additions, and improvements fall within a scope of embodiments of the present disclosure as represented by the appended claims. The specification and drawings are,

accordingly, to be regarded in an illustrative rather than a restrictive sense.

[115] Conditional language, such as, among others, "can," "could," "might," or "may," unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment.