This application claims priority to Italian Application No. 102022000017715, filed on Aug. 29, 2022, entitled “SYSTEMS AND METHODS FOR ROUTE ENHANCEMENT,” which is hereby expressly incorporated by reference herein.
A fleet of vehicles may be used to deliver goods and/or provide services. Determining the best routes for the fleet of vehicles is often a major concern for fleet managers. The routes may need to be determined based on different constraints such as fuel consumption, travel time, and/or an amount of emission of the fleet of vehicles.
The following detailed description of example implementations refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements.
Vehicle routing systems schedule a set of stops among a fleet of vehicles while attempting to minimize operational costs of routes associated with the set of stops (e.g., a set of geographical locations). The operational costs of a route may include a mileage or a distance associated with the route, an overall duration associated with the route, and/or an amount of fuel consumption for the route, among other examples. In some instances, a local search algorithm may be used to determine the routes associated with the set of stops with the goal of reducing operational costs. An example of the local search algorithm may be a Tabu search algorithm.
However, using the local search algorithm to determine routes is a computationally intensive task. For example, the local search algorithm involves numerous iterations of generating multiple routes and evaluating the routes. For instance, during each iteration, the local search algorithm will generate multiple routes that include different combinations of stops and evaluating the routes to identify a route associated with a lowest operational cost. In some instances, a route identified during a first iteration may be similar to a route identified during a second iteration. In this regard, computations performed during the first iteration may be same or similar to computations performed during the second iteration. In other words, the computations may be duplicative. Accordingly, such computations may unnecessarily consume computing resources.
In some instances, during an iteration, the local search algorithm may modify a first route by moving a stop from a second route to the first route. Such a move may generate an undesirable and inefficient route if the stop is a threshold distance away from stops included in the first route. Accordingly, such a change may unnecessarily consume computing resources.
In some instances, the first route and the second route may include a same subset of stops. The second route may be generated by changing an order of the subset of routes in the first route. Such a move may not generate an improved route, with respect to the first route, if the subset of stops are sequential and if the subset of stops are within a distance threshold of each other. Accordingly, such a change may unnecessarily consume computing resources.
In some situations, the local search algorithm may be used to evaluate a large number of stops and a large number of drivers. Processing such large numbers of stops and drivers as a whole is a time consuming task. Accordingly, for at least the foregoing reasons, using the local search algorithm in this manner consumes computing resources, storage resources, and/or network resources, among other examples.
Implementations described herein are directed to reducing a quantity of computations and reducing an amount of time associated with determining an optimal route (e.g., a route associated with a lowest computational cost). For example, implementations described herein involve storing changes, of a particular type of change, in a data structure to prevent performing duplicative computations. Implementations described herein involve identifying multiple groups of stops and drivers (or vehicles), with each group being associated with a respective geographical location. Additionally, or alternatively, implementations described herein involve avoiding moving a stop from a first route to a second route when a distance between the stop and stops of the second route satisfies a distance threshold.
By reducing the quantity of computation and reducing the amount of time associated with determining an optimal route as described herein, implementations described herein may preserve computing resources, storage resources, network resources, among other examples, that would have otherwise been consumed by the local search algorithm described above.
Routing optimization system 105 may include one or more devices capable of receiving, generating, storing, processing, and/or providing information associated with determining routes based on information regarding stops and information regarding drivers, as described in more detail below. In some implementations, routing optimization system 105 may determine the routes as a result of multiple iterations of determining different combinations of stops and determining a cost associated with each combination of stops.
During an iteration, routing optimization system 105 may perform all possible changes, of a first type of change of a plurality of types of changes, on a current route; perform all possible changes, of a second type of change of the plurality of types of changes, on the current route; and so on. All possible changes, of a type of change, may be referred to as a “neighborhood.”
Routing optimization system 105 may determine a route for each change performed and may determine a cost (e.g., an operational cost) associated with each route. Each route may be associated with a driver and/or a vehicle associated with the driver. Routing optimization system 105 may determine a cost associated with a route based on a distance associated with the route, a travel time associated with the route, a cost of a driver associated with the route, a cost of a vehicle associated with driver, among other examples. During each iteration, a route associated with a lowest cost may be referred to as a “solution.” The cost of the driver may include a salary of the driver, a salary bonus provided to the driver, healthcare benefits provided to the driver, and/or one or more types of insurance policies provided to the driver, among other examples.
The plurality of types of changes may include changes associated with inverting a sequence of stops, swapping an order of two stops, removing a stop from a route and including the stop in a set of unassigned stops, inserting a stop (from the set of unassigned stops) in the route, and/or moving a stop from the current route to another route (or vice versa), among other examples. An unassigned stop is a stop that is not included in any route.
Client device 110 may include one or more devices capable of receiving, generating, storing, processing, and/or providing information associated with determining routes. For example, client device 110 may provide, to routing optimization system 105, requests for one or more routes associated with multiple stops and one or more drivers. Client device 110 may receive, from routing optimization system 105, information regarding the one or more routes.
Route information data structure 115 may include a data structure (e.g., a database, a table, and/or a linked list) that stores route information of routes determined by routing optimization system 105 during each iteration. The route information, for each route, includes cost information identifying a cost associated with the route. Additionally, the route information, for each route, is stored in a respective entry of the data structure.
As shown in
The request may include information identifying the plurality of stops, information identifying the drivers, and/or information identifying vehicles associated with the drivers, among other examples. As an example, a first vehicle may be associated with a first driver, a second vehicle may be associated with a second driver, and so on.
The information identifying a stop, of the plurality of stops, may include information identifying a geographical location (e.g., an address, geographical coordinates, among other examples). The information identifying a driver, of the plurality of drivers, may include a name of the driver, wages of the driver, a geographical area associated with the driver, working hours of the driver, among other examples.
The information identifying a vehicle, of the plurality of vehicles, may include a vehicle identification number of the vehicle, information identifying a cost associated with operating the vehicle (e.g., fuel cost and/or maintenance cost), information identifying a capacity of the vehicle, among other examples. The information identifying the capacity of the vehicle may indicate one or more operations that may be performed by the vehicle, one or more types of services to be performed using the vehicle, a payload capacity of the vehicle, among other examples.
In some implementations, the request may include one or more constraints associated with the request. The one or more constraints may include a period of time for servicing the plurality of stops, a maximum duration of a route, a period of time for a break for a driver, a desired compatibility between a service to be performed at the stop and a capacity of a vehicle and/or a driver, among other examples.
A vehicle may be compatible with a stop if the vehicle can be used to service the stop. A driver may be compatible with a stop if the stop can potentially be serviced by the driver. A service may include a delivery service (e.g., to deliver items), a pickup service (e.g., to pick items), a repair service, a maintenance service, and/or an installation service, among other examples. In this regard, servicing a stop may refer to performing one or more of the services at the stop.
As shown in
Conversely, a driver is not compatible with a stop if an amount of time for the driver to travel to the stop, service the stop, and return to a departure location of the driver is greater than a total allowable driving or working time. Additionally, or alternatively, a driver is not compatible with a stop if a capacity associated with the stop exceeds a capacity associated with a vehicle of the driver (e.g., a payload to be picked at the stop exceeds a payload capacity of the vehicle).
Additionally, or alternatively, a driver is not compatible with a stop if the stop requires some skills which the driver does not possess. Additionally, or alternatively, a driver is not compatible with a stop if the stop is not included in a geographical area associated with the driver. Additionally, or alternatively, a driver is not compatible with a stop if a period of time associated with servicing the stop is not included in working hours of the driver.
After determining compatibility between drivers and stops (and/or incompatibility between drivers and stops), routing optimization system 105 may generate a graph (e.g., a symmetric graph) that includes a plurality of nodes. Each driver and each stop may be represented by a respective node of the plurality of nodes. Routing optimization system 105 may provide a connection between a node associated with a driver and a node associated with a stop that are compatible for each possible pair of nodes. The connection may be an edge or an arc.
Routing optimization system 105 may determine connected components of the graph. Connected components may refer to disjoint sets of nodes which can all be reached from one another using the edges of the graph, and none of which can reach any node of other disjoint sets of nodes. For example, a connected component may include one or more pairs of nodes representing one or more pairs of drivers and nodes that are compatible. Each node, of the connected component, can be reached by one or more other nodes of the connected component. Each connected component, of the connected components, may be from a group of drivers and stops.
By determining the different groups in this manner and determining routes for each of the different groups, routing optimization system 105 may preserve computing resources, storage resources, network resources, among other examples, that would have otherwise been consumed by considering all drivers and stops as a whole.
As shown in
Routing optimization system 105 may determine the plurality of routes by including (or inserting) all possible combinations of the plurality of stops. For example, routing optimization system 105 may determine a first route that includes a first stop (e.g., by inserting the first stop), a second route that includes a second stop (e.g., by inserting the second stop), a third route that includes the first stop and the second stop (e.g., by inserting the first stop and the second stop), a fourth route that includes the second stop and a third stop (e.g., by inserting the second stop and the third stop), and so on. Routing optimization system 105 may determine a cost associated with each route of the plurality of routes. Routing optimization system 105 may determine a cost associated with a route based on a distance associated with the route, a travel time associated with the route, a cost (e.g., wages) of a driver associated with the route, a cost of a vehicle associated with driver, among other examples.
The distance associated with the route may include a distance between all consecutive stops of the routes. The travel time associated with the route may include a travel time between all consecutive stops of the routes. Routing optimization system 105 may select a route associated with a lowest cost, out of costs associated with the plurality of routes, as the initial route. In other words, the initial route may be a solution during the first iteration.
In some implementations, routing optimization system 105 may perform one or more additional iterations. For example, during a second iteration, routing optimization system 105 may identify a subset of routes of the plurality of routes that were determined during the first iteration. The subset of routes may correspond to routes associated with lowest costs. For example, routing optimization system 105 may identify the top thirty routes, the top fifty routes, the top hundred routes, among other examples.
Routing optimization system 105 may determine a subsequent plurality of routes by performing the insertions of stops, associated with the subset of routes, on the initial route instead of inserting all possible combinations of the plurality of stops into the initial route (as performed during the first iteration). Determining the subsequent plurality of routes by performing the insertions of stops may be part of an initial heuristic process to determining initial routes. Routing optimization system 105 may determine a cost associated with each route of the subsequent plurality of routes. Routing optimization system 105 may select a route associated with a lowest cost, out of costs associated with the subsequent plurality of routes, as the initial route. Routing optimization system 105 may perform one or more similar iterations.
In some implementations, the initial route may include a portion of the plurality of stops identified in the request. In other words, one or more stops, of the plurality of stops, may not be included in the initial route. The one or more stops may be unassigned stops. By determining the initial route in this manner, routing optimization system 105 may preserve computing resources, storage resources, network resources, among other examples, that would have otherwise been consumed by considering all possible combination of the plurality of stops during each iteration.
As shown in
In some implementations, when determining the plurality of routes, routing optimization system 105 may determine whether a change involves moving a particular stop from a first route to a second route with stops that are not located within a distance threshold of the particular stop. If routing optimization system 105 determines that the stops are not located within the distance threshold of the particular stop, routing optimization system 105 may not perform a change that causes the particular stop to be moved to the second route.
Routing optimization system 105 may not move the particular stop because such a change will not yield an efficient route (e.g., due to the distance between the particular stop and the stops of the second route). By not moving the particular stop, routing optimization system 105 may preserve computing resources, storage resources, network resources, among other examples, that would have otherwise been consumed by performing a change that would yield an efficient route.
As shown in
In some implementations, routing optimization system 105 may determine whether a route includes equivalent routes prior to performing particular types of changes that involve changing an order of the equivalent stops. For example, routing optimization system 105 may not perform the particular types of changes on the equivalent stops. Alternatively, routing optimization system 105 may perform the particular types of changes on stops that are not equivalent stops.
Because equivalent stops are provided one after another in a same location and do not involve travel time and distance between stops, rearranging the stops would not provide an improvement of cost for a route that includes the equivalent stops. By not performing the particular types of changes, routing optimization system 105 may preserve computing resources, storage resources, network resources, among other examples, that would have otherwise been consumed by performing the particular types of changes without improving the route.
As shown in
In some instances, a change performed during one iteration may be similar to a change performed during a subsequent iteration. Accordingly, by storing the route information as described herein, routing optimization system 105 may preserve computing resources, storage resources, network resources, among other examples, that would have otherwise been consumed by performing the same changes during multiple iterations (e.g., consumed by performing duplicative computations).
As shown in
As shown in
For example, routing optimization system 105 may determine a first route associated with a lowest cost from the first plurality of routes associated with the first type of change, determine a second route associated with a lowest cost from the second plurality of routes associated with the second type of change, and so on. Routing optimization system 105 may determine the particular route as a route associated with a lowest cost out of the first route, the second route, and so on.
Routing optimization system 105 may determine the first route, the second route, and so on based on a plurality of entries in route information data structure 115 corresponding to the first plurality of routes, the second plurality of routes, and so on. In some implementations, the plurality of entries may be ranked in an order that is based on the costs associated with the plurality of routes. In some situations, the plurality of entries may be ranked in route information data structure 115. Alternatively, routing optimization system 105 (or another device associated with routing optimization system 105) may rank the plurality of entries after the plurality of entries have been obtained from route information data structure 115. In some situations, the plurality of entries may be ranked by increasing cost. For instance, the plurality of entries corresponding to the first plurality of routes may be ranked in an order that is based on the costs associated with the first plurality of routes, the plurality of entries corresponding to the second plurality of routes may be ranked in an order that is based on the costs associated with the second plurality of routes, and so on.
In this regard, the first route may be ranked highest out of the first plurality of routes, the second route may be ranked highest out of the second plurality of routes, and so on. In some implementations, when determining a particular route associated with a lowest cost from a particular plurality of routes associated with a particular type of change, routing optimization system 105 may determine whether an entry, of a plurality of entries in route information data structure 115 associated with the particular plurality of routes, is empty.
If routing optimization system 105 determines that the entry is not empty, routing optimization system 105 may determine that route information data structure 115 stores the route information for all the particular plurality of routes associated with the particular type of change. Accordingly, routing optimization system 105 may determine the particular route based on the plurality of entries corresponding to the particular plurality of routes.
If routing optimization system 105 determines that the entry is empty, routing optimization system 105 may determine that route information data structure 115 does not store the route information for all the particular plurality of routes associated with the particular type of change. Accordingly, routing optimization system 105 may determine the route associated with the entry and store the route information for the route in route information data structure 115, in a manner similar to the manner described above. In this regard, routing optimization system 105 may determine the particular route based on all the plurality of entries corresponding to the particular plurality of routes.
As shown in
In some implementations, routing optimization system 105 may maintain information regarding routes associated with costs that do not satisfy a cost threshold. In other words, routing optimization system 105 may maintain a pool of acceptable routes. As an example, for three groups of drivers A, B and C and for three stops, a first route may be generated for a driver in group A with the stop sequence (1, 2, 3) which has a first cost (e.g., 50). In this regard, routing optimization system 105 may include information regarding the first route in the pool (e.g., information identifying the stops, information identifying the sequence of the stops, information identifying a cost of the first route, among other examples). A second route may be generated for a driver in group A with the stop sequence (1,5,2,3) which has a second cost (e.g., 60) that exceeds the first cost. In this regard, routing optimization system 105 may include information regarding the second route in the pool in a similar manner.
A third route may be generated for a driver in group A with the stop sequence (2,3,1) which has a third cost (e.g., 40) that is less than the first cost and the second cost. In this regard, the pool will be updated with respect to data previously registered for the first route, by remembering that drivers in group A can serve stops (1,2,3) with the third cost (which is less than the first cost recorded in step 1). The combined cost may be determined based on information included in the pool.
In some implementations, routing optimization system 105 may determine the combined cost of two or more routes based on the following integer linear programming problem. As an example, let R be the pool of all the routes, G be the set of all the driver groups, P be the ordered set of all stop priority classes (with the lower values having higher priority), S be the set of all stops, xr be a variable which is either 0 or 1 depending on whether route r has been chosen in the solution, ys be a variable which is either 0 or 1 depending on whether stop s is covered by one route in the solution, cost(r) be the cost of route r, stops(r) be the set of stops served by route r, group(r) be the driver group for route r, priority(s) be the priority of stop s, capacity(g) be the number of drivers in driver group g, and served(p) be the number of served stops for every priority class p in the best solution found so far.
The objective function to be minimized is the total cost of all the selected routes using the following equation:
and the constraints are: that every stop should be served by at most 1 route using the following equation:
that stops can be marked as “served” only if there is a route serving the stops using the following equation:
that every driver group has a maximum number of vehicles available using the following equation:
that the solution should serve no less stops than the best solution found so far using the following equation:
As an alternative, one can choose to also add the unassigned penalties in the objective function, changing the first equation to using the following equation:
As shown in
Routing optimization system 105 may perform two types of perturbations. A first type of perturbation may involve removing a subset of stops of the stops included in the particular route. A second type of perturbation may involve reassigning the subset of stops in a different way. The first type of perturbation may include randomly removing a number of stops (e.g., a fixed number or a fixed portion of the total number of stops), randomly picking a fixed number of drivers and removing all of stops associated with the drivers (e.g., a fixed number or a fixed portion of the drivers), removing a stop and a fixed number of stops adjacent to the stop, and/or a worst removal.
The worst removal involves removal of stops based on a measurement of improvement in cost. During the first phase, for every stop, routing optimization system 105 may compute an objective function change that would occur should such stop be removed from the route. The stops may be ranked, based on a respective objective function change, from worst improvement in cost to best improvement in cost. Finally, starting from the first ranked stop, the first stop is removed in accordance with a fixed probability, subsequently, the second ranked stop is removed in accordance with the same fixed probability, and so on, until a fixed number of stops have been removed.
With respect to the second type of perturbation, the removed stops may be included (or inserted) in routes in a manner similar to the manner described in connection with
As shown in
In some implementations, routing optimization system 105 may move the first continuous sequence of stops to the second previously determined route without moving the second continuous sequence of stops to the first previously determined route. For example, each pair of consecutive stops, in the first previously determined route, may be connected by an edge (or an arc). Routing optimization system 105 may identify two longest edges in the first previously determined route and remove the stops associated with the two longest edges.
Such change may result in the first previously determined route being split into three subsequences (some of which might be empty, in case the removed stops are the first stop or the last stop of the first previously determined route). Routing optimization system 105 may discard any subsequence which consists of less than 2 stops. Routing optimization system 105 may insert all remaining subsequences into the second previously determined route. Routing optimization system 105 may insert all remaining subsequences into all possible locations in the second previously determined route.
As shown in
In some implementations, routing optimization system 105 may select such solution using a quadratic penalty function for each route cost to ensure that multiple drivers are assigned an equal amount of work. Assuming that ci is the current cost for the ith route, a cost of such solution may be determined as follows
In this regard, the cost for every route is independent from the cost of other routes and thus every route information can be stored in a dedicated data structure as described above in connection with
As shown in
For example, if the start time occurs after an earliest possible break time for the driver, routing optimization system 105 may determine a break time before the start time. For example, if the arrival time occurs at or prior to the earliest possible break time assigned to the driver, then routing optimization system 105 may assign the break time as the earliest possible break time. If the earliest break time occurs prior to the arrival time and the arrival time occurs at or prior to a latest possible break time assigned to the driver, then routing optimization system 105 may assign the break time to the arrival time.
If the arrival time occurs after the latest possible break time, the break time is assigned on the way to the particular stop. If the start time occurs at or after the earliest possible break time and if the departure time occurs at or after the latest possible break time, then routing optimization system 105 may assign the break time prior to the start time.
As shown in
As shown in
By reducing the quantity of computation and reducing the amount of time associated with determining an optimal route as described herein, implementations described herein may preserve computing resources, storage resources, network resources, among other examples, that would have otherwise been consumed by the local search algorithm described above.
As indicated above,
The cloud computing system 202 includes computing hardware 203, a resource management component 204, a host operating system (OS) 205, and/or one or more virtual computing systems 206. The cloud computing system 202 may execute on, for example, an Amazon Web Services platform, a Microsoft Azure platform, or a Snowflake platform. The resource management component 204 may perform virtualization (e.g., abstraction) of computing hardware 203 to create the one or more virtual computing systems 206. Using virtualization, the resource management component 204 enables a single computing device (e.g., a computer or a server) to operate like multiple computing devices, such as by creating multiple isolated virtual computing systems 206 from computing hardware 203 of the single computing device. In this way, computing hardware 203 can operate more efficiently, with lower power consumption, higher reliability, higher availability, higher utilization, greater flexibility, and lower cost than using separate computing devices.
Computing hardware 203 includes hardware and corresponding resources from one or more computing devices. For example, computing hardware 203 may include hardware from a single computing device (e.g., a single server) or from multiple computing devices (e.g., multiple servers), such as multiple computing devices in one or more data centers. As shown, computing hardware 203 may include one or more processors 207, one or more memories 208, one or more storage components 209, and/or one or more networking components 210. Examples of a processor, a memory, a storage component, and a networking component (e.g., a communication component) are described elsewhere herein.
The resource management component 204 includes a virtualization application (e.g., executing on hardware, such as computing hardware 203) capable of virtualizing computing hardware 203 to start, stop, and/or manage one or more virtual computing systems 206. For example, the resource management component 204 may include a hypervisor (e.g., a bare-metal or Type 1 hypervisor, a hosted or Type 2 hypervisor, or another type of hypervisor) or a virtual machine monitor, such as when the virtual computing systems 206 are virtual machines 211. Additionally, or alternatively, the resource management component 204 may include a container manager, such as when the virtual computing systems 206 are containers 212. In some implementations, the resource management component 204 executes within and/or in coordination with a host operating system 205.
A virtual computing system 206 includes a virtual environment that enables cloud-based execution of operations and/or processes described herein using computing hardware 203. As shown, a virtual computing system 206 may include a virtual machine 211, a container 212, or a hybrid environment 213 that includes a virtual machine and a container, among other examples. A virtual computing system 206 may execute one or more applications using a file system that includes binary files, software libraries, and/or other resources required to execute applications on a guest operating system (e.g., within the virtual computing system 206) or the host operating system 205.
Although routing optimization system 105 may include one or more elements 203-213 of the cloud computing system 202, may execute within the cloud computing system 202, and/or may be hosted within the cloud computing system 202, in some implementations, routing optimization system 105 may not be cloud-based (e.g., may be implemented outside of a cloud computing system) or may be partially cloud-based. For example, routing optimization system 105 may include one or more devices that are not part of the cloud computing system 202, such as device 300 of
Network 220 includes one or more wired and/or wireless networks. For example, network 220 may include a cellular network, a public land mobile network (PLMN), a local area network (LAN), a wide area network (WAN), a private network, the Internet, and/or a combination of these or other types of networks. The network 220 enables communication among the devices of environment 200.
Client device 110 includes one or more devices capable of receiving, generating, storing, processing, and/or providing information associated with route enhancement, as described elsewhere herein. Client device 110 may include a communication device and a computing device. For example, client device 110 may include a wireless communication device, a mobile phone, a user equipment, a laptop computer, a tablet computer, a desktop computer, a wearable communication device, or a similar type of device.
The number and arrangement of devices and networks shown in
Bus 310 includes a component that enables wired and/or wireless communication among the components of device 300. Processor 320 includes a central processing unit, a graphics processing unit, a microprocessor, a controller, a microcontroller, a digital signal processor, a field-programmable gate array, an application-specific integrated circuit, and/or another type of processing component. Processor 320 is implemented in hardware, firmware, or a combination of hardware and software. In some implementations, processor 320 includes one or more processors capable of being programmed to perform a function. Memory 330 includes a random access memory, a read only memory, and/or another type of memory (e.g., a flash memory, a magnetic memory, and/or an optical memory).
Storage component 340 stores information and/or software related to the operation of device 300. For example, storage component 340 may include a hard disk drive, a magnetic disk drive, an optical disk drive, a solid state disk drive, a compact disc, a digital versatile disc, and/or another type of non-transitory computer-readable medium. Input component 350 enables device 300 to receive input, such as user input and/or sensed inputs. For example, input component 350 may include a touch screen, a keyboard, a keypad, a mouse, a button, a microphone, a switch, a sensor, a global positioning system component, an accelerometer, a gyroscope, and/or an actuator. Output component 360 enables device 300 to provide output, such as via a display, a speaker, and/or one or more light-emitting diodes. Communication component 370 enables device 300 to communicate with other devices, such as via a wired connection and/or a wireless connection. For example, communication component 370 may include a receiver, a transmitter, a transceiver, a modem, a network interface card, and/or an antenna.
Device 300 may perform one or more processes described herein. For example, a non-transitory computer-readable medium (e.g., memory 330 and/or storage component 340) may store a set of instructions (e.g., one or more instructions, code, software code, and/or program code) for execution by processor 320. Processor 320 may execute the set of instructions to perform one or more processes described herein. In some implementations, execution of the set of instructions, by one or more processors 320, causes the one or more processors 320 and/or the device 300 to perform one or more processes described herein. In some implementations, hardwired circuitry may be used instead of or in combination with the instructions to perform one or more processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.
The number and arrangement of components shown in
As shown in
As further shown in
As further shown in
As further shown in
As further shown in
As further shown in
In some implementations, the particular type of change involves changing an order of two or more stops of the plurality of stops, and wherein the method further comprises determining whether the two or more stops are equivalent stops by determining whether the two or more stops are consecutive stops, whether the two or more stops are associated with a same location, and whether the two or more stops do not involve a travel time between each of the two or more stops, and performing the particular type of change on the two or more stops based on determining that the two or more stops are not equivalent stops.
In some implementations, the particular type of change involves changes regarding stops of two or more different routes, and wherein the method further comprises determining a distance between a vehicle, associated with a first route of the two or more different routes, and a stop included in a second route of the two or more different routes, determining whether the distance satisfies a distance threshold, and moving the stop from the second route to the first route based on determining that the distance does not satisfy the distance threshold.
In some implementations, process 400 includes determining a combined cost associated with a combination of a first route, of the plurality of routes, and of a second route of the plurality of routes, determining whether the cost associated with the particular route exceeds the combined cost, and selecting the particular route based on determining that the cost associated with the particular route does not exceed the combined cost.
In some implementations, process 400 includes determining a cost associated with a first driver servicing the particular route, determining the costs associated with the first driver and a second driver servicing the particular route, wherein a first traveling cost for the first driver exceeds a combined traveling cost associated with the first driver and the second driver servicing the particular route, determining that the cost associated with the first driver exceeds a combination of the costs associated with the first driver and the second driver, and causing the first driver and the second deliver to service the particular route based on determining that the cost associated with the first driver exceeds the combination of the costs.
In some implementations, process 400 includes receiving stop information identifying a set of stops and driver information identifying a set of drivers, and determining, based on the stop information and the driver information, a group of stops associated with a geographical location and a group of drivers associated with the geographical location, wherein the plurality of stops are included in the group of stops.
In some implementations, process 400 includes determining that a driver is associated with the particular route, determining an arrival time of the driver at a particular stop of the particular route, a wait time of the driver prior to performing a service at the particular stop, a start time for performing the service, and a departure time from the particular stop, and determining a break time for the driver based on the arrival time, the wait time, the start time, and the departure time.
Although
As used herein, the term “component” is intended to be broadly construed as hardware, firmware, or a combination of hardware and software. It will be apparent that systems and/or methods described herein may be implemented in different forms of hardware, firmware, and/or a combination of hardware and software. The actual specialized control hardware or software code used to implement these systems and/or methods is not limiting of the implementations. Thus, the operation and behavior of the systems and/or methods are described herein without reference to specific software code - it being understood that software and hardware can be used to implement the systems and/or methods based on the description herein.
To the extent the aforementioned implementations collect, store, or employ personal information of individuals, it should be understood that such information shall be used in accordance with all applicable laws concerning protection of personal information. Additionally, the collection, storage, and use of such information can be subject to consent of the individual to such activity, for example, through well known “opt-in” or “opt-out” processes as can be appropriate for the situation and type of information. Storage and use of personal information can be in an appropriately secure manner reflective of the type of information, for example, through various encryption and anonymization techniques for particularly sensitive information.
Even though particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the disclosure of various implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification. Although each dependent claim listed below may directly depend on only one claim, the disclosure of various implementations includes each dependent claim in combination with every other claim in the claim set. As used herein, a phrase referring to “at least one of” a list of items refers to any combination of those items, including single members. As an example, “at least one of: a, b, or c” is intended to cover a, b, c, a-b, a-c, b-c, and a-b-c, as well as any combination with multiple of the same item.
No element, act, or instruction used herein should be construed as critical or essential unless explicitly described as such. Also, as used herein, the articles “a” and “an” are intended to include one or more items, and may be used interchangeably with “one or more.” Further, as used herein, the article “the” is intended to include one or more items referenced in connection with the article “the” and may be used interchangeably with “the one or more.” Furthermore, as used herein, the term “set” is intended to include one or more items (e.g., related items, unrelated items, or a combination of related and unrelated items), and may be used interchangeably with “one or more.” Where only one item is intended, the phrase “only one” or similar language is used. Also, as used herein, the terms “has,” “have,” “having,” or the like are intended to be open-ended terms. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise. Also, as used herein, the term “or” is intended to be inclusive when used in a series and may be used interchangeably with “and/or,” unless explicitly stated otherwise (e.g., if used in combination with “either” or “only one of”).
In the preceding specification, various example embodiments have been described with reference to the accompanying drawings. It will, however, be evident that various modifications and changes may be made thereto, and additional embodiments may be implemented, without departing from the broader scope of the invention as set forth in the claims that follow. The specification and drawings are accordingly to be regarded in an illustrative rather than restrictive sense.
Number | Date | Country | Kind |
---|---|---|---|
102022000017715 | Aug 2022 | IT | national |