Patent Description:
The present disclosure generally relates to a system for routing delivery vehicles, in particular for routing multiple vehicles to fulfil orders.

Conventionally, systems may manage the operation of a fleet of vehicles. For example, systems may manage vehicles that deliver packages or cargo. One inefficiency in such systems is that a human operator is often responsible for configuring parameters, which may change from day to day. Human operators may gather information from multiple sources and manually configure parameters for a routing system, which is a time-consuming task and subject to human error. Prior art is disclosed in <CIT>.

Additionally, such human operators often have some degree of flexibility or tolerance with respect to certain parameters, but the routing system may require a particular parameter.

In view of the above, it can be appreciated that there are problems, shortcomings or disadvantages associated with user interaction with routing system, and that it would be desirable if improved systems and methods for operating routing systems were available.

The following presents a simplified summary of one or more aspects of the invention in order to provide a basic understanding of such aspects. Its purpose is to present some concepts of one or more aspects in a simplified form as a prelude to the more detailed description that is presented later.

In one aspect, the disclosure provides a method of routing delivery vehicles. The method may include generating, by a processor, a plurality of routing passes, each routing pass including a set of parameters, using one or more business rules that describe a set of allowed values for one or more of the parameters. The method may include executing each the plurality of routing passes on a routing platform configured to generate a routing plan corresponding to a single routing pass. The method may include selecting, by the processor, one of the plurality of routing passes according to a comparison rule set that assigns a score to each routing plan corresponding to a respective one of the plurality of routing passes. The method may include dispatching the selected routing pass via the routing platform.

In another aspect, the disclosure provides a system for routing delivery vehicles. The system may include a memory storing computer-executable instructions. The system may include a network interface in communication with a routing platform. The system may include a processor communicatively coupled with the memory and the communications interface and configured to execute the computer-executable instructions. The processor may generate a plurality of routing passes, each routing pass including a set of parameters, using one or more business rules that describe a set of allowed values for one or more of the parameters. The processor may execute each the plurality of routing passes on a routing platform configured to generate a routing plan corresponding to a single routing pass. The processor may select one of the plurality of routing passes according to a comparison rule set that assigns a score to each routing plan corresponding to a respective one of the plurality of routing passes. The processor may dispatch the selected routing pass via the routing platform.

In another aspect, the present disclosure provides a non-transitory computer-readable medium storing computer-executable instructions. The non-transitory computer-readable medium may include instructions to generate a plurality of routing passes, each routing pass including a set of parameters, using one or more business rules that describe a set of allowed values for one or more of the parameters. The non-transitory computer-readable medium may include instructions to execute each the plurality of routing passes on a routing platform configured to generate a routing plan corresponding to a single routing pass. The non-transitory computer-readable medium may include instructions to select one of the plurality of routing passes according to a comparison rule set that assigns a score to each routing plan corresponding to a respective one of the plurality of routing passes. The non-transitory computer-readable medium may include instructions to dispatch the selected routing pass via the routing platform.

Routing platforms provide a powerful tool for improving the efficiency of logistics for various businesses. A routing platform may receive orders defining products or packages and delivery locations. The routing platform may also be configured with resources for fulfilling the order. The routing platform may also be configured with various parameters for routing the resources to fulfil the orders. In an aspect, a set of parameters may be referred to as a routing pass. Known routing platform include a large number of parameters. For example, the Omnitracs One or Roadnet Anywhere routing platform, available from Omnitracs LLC of Dallas, TX, includes more than <NUM> configurable parameters. The configurable parameters may include, for example but not limited hereto, binary values, time values, quantity values, selection of options, and/or scalable priorities.

In existing systems, a human operator may use a web service provided by the routing platform to configure the routing system with a configuration including values for various routing parameters. The routing platform may execute a routing algorithm based on the received orders and the configuration to generate a routing plan for fulfilling the orders that satisfies the constraints indicated by the configuration. A human operator that is aware of flexibility of the configuration of routing parameters may attempt to improve the generated routing plan by altering configuration the configuration of routing parameters and executing the routing algorithm again. This approach is essentially a trial-and-error process that is time consuming and subject to mistakes by the human operator.

In contrast, the present disclosure provides for an autonomous routing system that interacts with a routing platform. That is, the autonomous routing system provides an additional software layer on top of the routing platform for improving the user interface with the routing platform. In particular, the autonomous routing system may automate some tasks conventionally performed by a human operator of the routing platform and perform additional operations that may be unfeasible for a human operator. The autonomous routing system may also exploit parallel operations to improve the speed of a routing process. Thus, the autonomous routing system provides an improvement over existing routing platforms.

Turning now to the Figures, <FIG> illustrates an example logistics system <NUM> including an autonomous routing system <NUM> that determines routing plans via a routing platform <NUM> based on information from one or more external systems <NUM> and a configuration from a user <NUM>. The autonomous routing system <NUM> may receive the configuration from the user <NUM>, and autonomously obtain information from the one or more external systems <NUM> based on the configuration. The autonomous routing system <NUM> may generate routing passes to be executed by the routing system to create routing plans. A routing pass may be a set of parameters defining user requirements and/or goals for routing. The routing pass parameters may be set by the routing platform <NUM>, for example, as routing pass settings <NUM>. A routing plan may specify movements of one or more delivery vehicles. For example, a routing plan may specify at least an identifier of a package, good, or service and one stop. Typically, a routing plan may also include multiple stops, an order of the stops, directions between the stops, times for the stops, vehicles, drivers, delivery instructions, or other information to control one or more delivery vehicles. The autonomous routing system <NUM> may select one of the routing plans and dispatch the selected routing plan via the routing platform <NUM> to control resources such as warehouses and vehicles.

The routing platform <NUM> may be a commercial routing platform such as the OMNITRACS ONE platform provided by Omnitracs, LLC of Dallas, TX. The routing platform <NUM> may perform specific routing actions for a user, who may be, for example, an operator representing a business. The routing platform <NUM> may receive and store orders <NUM>. An order <NUM> may include at least an identification of an item (e.g., product or package) and a destination (e.g., an address). The routing platform <NUM> may also store resources <NUM>. Resources <NUM> may identify resources that the business may use to fulfil the orders <NUM>. For example, the resources <NUM> may identify warehouses <NUM> and vehicles <NUM>. The routing platform <NUM> may execute a routing algorithm <NUM> to generate a routing plan <NUM> by assigning resources to orders and determining a route for each vehicle <NUM> to follow to deliver the orders. The routing algorithm <NUM> may be based on routing pass settings <NUM> that define various constraints for the routing algorithm <NUM>. In an aspect, the routing platform <NUM> may receive routing passes <NUM> from the autonomous routing system <NUM>.

The autonomous routing system <NUM> may provide an interface between the user <NUM> and the routing platform <NUM>. The autonomous routing system <NUM> may include a routing pass generator <NUM> that generates a plurality of different routing passes for execution by the routing platform, a routing plan comparator <NUM> that receives routing plans from the routing pass generator and selects one of the plans, and an external system interface <NUM> that receives updates of routing parameters from one or more external systems <NUM>. The autonomous routing system <NUM> may be configured by a user <NUM>, who may define business rules <NUM>, a comparison rule set <NUM>, and interface rules <NUM>. The autonomous routing system <NUM> may automatically generate routing passes <NUM> for execution by the routing platform <NUM>, compare various routing plans <NUM>, and select one routing plan for the routing platform <NUM> to dispatch. The autonomous routing system <NUM> may also collect information from the one or more external systems, update the routing platform <NUM> based on the collected information, and update the external systems <NUM> based on determinations by the autonomous routing system <NUM> and/or the routing platform <NUM>.

The external system interface <NUM> may communicate with one or more external systems <NUM>. The external systems <NUM> may include any system that may have information related to the logistics of the business. For example, the external systems <NUM> may include a vehicle repair service that provides a repair status of the vehicles <NUM>. The routing platform <NUM> may store information about the vehicles <NUM>, but may not directly communicate with such an external service. The external system interface <NUM> may be configured with interface rules <NUM> that define how to acquire, process, and update information from external systems <NUM>. For example, for the example vehicle repair service, the interface rules <NUM> may indicate a time to acquire a vehicle status from the vehicle repair service, for example, before generating routing passes <NUM>. The interface rules <NUM> may include rules for converting a data format of the vehicle repair service into a data format of the routing platform <NUM>. For example, the interface rules <NUM> may correlate vehicle identifiers, and map repair information into an available or unavailable status. The external system interface <NUM> may export the updated information to the routing platform <NUM>. For example, the external system interface <NUM> may update a number of vehicles available for routing the orders. Other examples of external systems may include point of sale (POS) or third party sales systems that generate orders, employee management systems (e.g., payroll) that determine employee availability, customer relationship management system that manages customer addresses for pickups, delivery, or service, and inventory or warehouse management systems that provide product availability.

The routing pass generator <NUM> may generate a plurality of routing passes <NUM> based on business rules <NUM>. The business rules <NUM> may define a time and date for generating and executing the routing passes <NUM> and the parameters for each routing pass <NUM>. The parameters for each routing pass <NUM> may depend on the time or date for executing the routing pass <NUM>. The parameters for the routing passes <NUM> generated by the routing pass generator <NUM> may correspond to the routing pass settings <NUM>. That is, each routing pass <NUM> may be a different combination of routing pass settings <NUM>. The business rules <NUM> may define the different combinations. For example, the business rules <NUM> may define multiple values or a range for a parameter such as a start time, maximum time, or maximum number of stops. Similarly, the routing pass settings <NUM> may include goals having sliding preference levels. The business rules <NUM> may define different combinations of preference level. In an aspect, the routing pass generator <NUM> may generate a routing pass including a value for each parameter of the routing pass settings <NUM>. For example, if the business rules <NUM> do not define a value for a parameter, the routing pass generator <NUM> may set a default value for the parameter. For example, default values may be <NUM>, null, blank, or false depending on the parameter.

In an aspect, the routing pass generator <NUM> may include a class component <NUM> that manages multiple classes of deliveries. For example, the multiple classes may correspond to customer levels, where higher customer levels receive priority in shipping, guaranteed delivery times, or other special treatment. The class component <NUM> may be configured to perform routing according to a priority level associated with each class of delivery. For example, the class component <NUM> may access business rules <NUM> to determine a class of an order based on one or more properties such as a customer name, customer identifier, delivery address, order size, or other property selected by user <NUM>. The class component <NUM> may assign a priority level to each order based on the determined class. The class component <NUM> may prioritize classes by routing each class separately in order of priority level. For example, the class component <NUM> may collect all orders and route a subset of orders in a highest priority class with routing pass settings <NUM> defining any rules for that class. The class component <NUM> may then update the routing pass settings <NUM> and route a subset of orders for a second class without deleting the routing plan for the highest priority class. The routing platform <NUM> will update the routing plan to include the second class of orders while maintaining the routing of the highest priority orders. For example, the highest priority orders may remain assigned to a particular vehicle and delivery window, but the additional orders for the second class of orders may be added before or after the existing routing for the highest priority orders. The class component <NUM> may proceed with routing each class of delivery sequentially.

The routing plan comparator <NUM> may compare routing plans <NUM> generated by the routing platform <NUM> based on a comparison rule set <NUM>. For example, the routing plan comparator <NUM> may assign a score to each routing plan <NUM> based on the comparison rule set. In an aspect, a base rule may define a base score. For example, the base score may be a total cost or profit of the routing plan. The comparison rule set <NUM> may include a set of logical conditions. For example, the comparison rule set <NUM> may include mandatory rules that a routing plan <NUM> must meet in order to be acceptable. For example, a mandatory condition may state that if a number of remaining unrouted orders is greater than zero, the routing plan is unacceptable. If a routing plan <NUM> does not satisfy a mandatory condition, the routing plan <NUM> may be excluded from being selected, or may be assigned a minimum score that will prevent the routing plan <NUM> from being selected. As another example, the comparison rule set <NUM> may include one or more balancing conditions that adjust the score based on whether the balancing condition is met. For instance, a balancing condition may be defined for one or more goals for each order (e.g., on time) or each vehicle <NUM> (e.g., meets target start time). Whenever a routing plan <NUM> does not meet the defined goal, a penalty may be applied to the score (e.g., increasing a cost or reducing a profit). Conversely, the score may be increased (e.g., decreasing a cost or increasing a profit) when a goal is met (e.g., vehicle <NUM> finishes early). The user <NUM> may configure the balancing rules based on priorities of the business. For example, the adjustments may correspond to actual financial incentives (e.g., credits applied to customer accounts for late deliveries) or represent reputational valuations. In any case, the routing plan comparator <NUM> may determine a total score for each routing plan <NUM>. In an aspect, the routing plan comparator <NUM> may automatically select a best routing plan (e.g., highest or lowest score based on the metric) and send a dispatch command including a selected routing pass <NUM> to the routing platform <NUM> to dispatch the best routing plan. In another aspect, the routing plan comparator <NUM> may provide the user <NUM> with the best routing plan and request approval to dispatch the routing plan.

<FIG> is a flowchart of an example method <NUM> of autonomously routing delivery vehicles. The method <NUM> may be performed by the autonomous routing system <NUM> in communication with a routing platform <NUM>.

In block <NUM>, the method <NUM> may optionally include receiving a data feed from an external system. In an aspect, for example, the external system interface <NUM> may receive a data feed from the external system <NUM>. The external system interface140 may request the data feed, for example, by submitting a query to the external system <NUM>. The query may be based on interface rules <NUM>, which may define a date and time for the query.

In block <NUM>, the method <NUM> may optionally include converting the data feed to a format compatible with the routing platform. In an aspect, for example, the external system interface <NUM> may convert the data feed to a format compatible with the routing platform. For example, the interface rules <NUM> may include rules for converting the format of the data feed.

In block <NUM>, the method <NUM> may optionally include updating the routing platform based on the data feed. In an aspect, for example, the external system interface <NUM> may update the routing platform <NUM> based on the data feed. For example, the external system interface <NUM> may update the orders <NUM> or the resources <NUM> based on the content of the data feed.

In block <NUM>, the method <NUM> may include generating a plurality of routing passes for a set of orders, each routing pass including a set of parameters, using one or more business rules that describe a set of allowed values for one or more of the parameters. In an aspect, for example, the routing pass generator <NUM> may generate a plurality of routing passes <NUM> for the set of orders, each routing pass including a set of parameters, using one or more business rules <NUM> that describe a set of allowed values for one or more of the parameters.

For instance, at sub-block <NUM>, the block <NUM> may optionally include generating the plurality of routing passes according to a date or time of the routing. The business rules <NUM> may define a date or time to perform the routing. The business rules <NUM> may also define parameters for a specific date or time. For example, the business rules <NUM> may allow multi-day routing Monday-Thursday, but not allow multi-day routing on Friday. As another example, the business rules <NUM> may specify a start time for each day, for example, based on driver schedules. The routing pass generator <NUM> may determine a time and date to generate the plurality of routing passes based on the one or more business rules. The routing pass generator <NUM> may select at least one value for the set of parameters based on the time and date according to the one or more business rules.

At sub-block <NUM>, the block <NUM> may optionally include generating a routing pass for each distinct combination of the set of allowed values for the one or more parameters. For example, the routing pass generator <NUM> may select a first allowed value each of the one or more parameters for a first routing pass, and a select a second allowed value for a first parameter and the first allowed value for each remaining parameter for a second routing pass. The routing pass generator <NUM> may proceed through the one or more parameters in a deterministic manner to identify each possible combination. In an aspect, since the number of potential combinations may grow exponentially with the number of parameters, the routing pass generator <NUM> may limit a number of variable parameters.

In block <NUM>, the method <NUM> may include executing each the plurality of routing passes on a routing platform configured to generate a routing plan corresponding to a single routing pass. In an aspect, for example, the routing pass generator <NUM> may execute each the plurality of routing passes on the routing platform <NUM> that is configured to generate a routing plan <NUM> corresponding to a single routing pass. For example, the routing pass generator <NUM> may execute each of the plurality of routing passes via a web interface or application programming interface (API) provided by the routing platform <NUM>.

In an aspect, in sub-block <NUM>, the block <NUM> may include concurrently executing multiple routing passes. The routing pass generator <NUM> may send multiple routing passes before the routing platform <NUM> finishes executing a first routing pass. Generally, the routing platform <NUM> is configured to handle multiple requests (e.g., from different users), so the routing platform <NUM> may process the multiple routing passes concurrently (e.g., using parallel resources). Therefore, the autonomous routing system <NUM> may execute the routing passes more quickly than would be feasible for a human to do. In particular, by executing multiple requests concurrently, the autonomous routing system may determine the best route without delaying dispatch of the routing plan and the delivery process.

In an aspect, at sub-block <NUM>, the block <NUM> may include sequentially executing the routing pass for each class of delivery. In the case of multiple classes of delivery, the autonomous routing system <NUM> may provide higher priority to orders by routing a subset of the orders before other orders. Accordingly, when multiple classes of delivery are configured, the routing pass may be executed sequentially for each class in order of priority level. The sequential executions of a routing pass may be performed concurrently with executions of other routing passes (e.g., as in sub-block <NUM>).

In block <NUM>, the method <NUM> may include applying, by the processor, a comparison rule set that assigns a score to each routing plan corresponding to a respective one of the plurality of routing passes. In an aspect, for example, the routing plan comparator <NUM> may apply the comparison rule set <NUM> that assigns a score to each routing plan <NUM> corresponding to a respective one of the plurality of routing passes <NUM>.

In block <NUM>, the method <NUM> may include selecting, by the processor, one of the plurality of routing passes based on the score of the corresponding routing plan. In an aspect, for example, the routing plan comparator <NUM> may select one of the plurality of routing passes <NUM> based on the score of the corresponding routing plan <NUM>.

In block <NUM>, the method <NUM> may include dispatching the selected routing pass via the routing platform for the set of orders. In an aspect, for example, the routing plan comparator <NUM> may dispatch the selected routing pass via the routing platform <NUM> by submitting a dispatch command including the selected routing pass <NUM> identifying the selected routing pass.

In block <NUM>, the method <NUM> may optionally include updating the external system based on the selected routing pass. In an aspect, for example, the external system interface <NUM> may update the external system <NUM> based on the selected routing pass. For example, the external system interface <NUM> may update a status of resources <NUM>.

<FIG> is a block diagram of an example of the autonomous routing system <NUM> in accordance with an implementation on a computer device <NUM>, including additional component details as compared to <FIG>. In one example, autonomous routing system <NUM> may include processor <NUM> for carrying out processing functions associated with one or more of components and functions described herein. Processor <NUM> can include a single or multiple set of processors or multi-core processors. Moreover, processor <NUM> can be implemented as an integrated processing system and/or a distributed processing system. In an implementation, for example, processor <NUM> may include a central processing unit (CPU). In an example, autonomous routing system <NUM> may include memory <NUM> for storing instructions executable by the processor <NUM> for carrying out the functions described herein. In an implementation, for example, memory <NUM> may store instructions for executing one or more of the routing pass generator <NUM>, routing plan comparator <NUM>, or external system interface <NUM>.

Further, autonomous routing system <NUM> may include a communications component <NUM> that provides for establishing and maintaining communications with one or more parties, vehicles, or drones, utilizing hardware, software, and services as described herein. Communications component <NUM> may carry communications between components on autonomous routing system <NUM>, as well as between autonomous routing system <NUM> and external devices, such as devices located across a communications network and/or devices serially or locally connected to autonomous routing system <NUM>. For example, communications component <NUM> may include one or more buses, and may further include transmit chain components and receive chain components associated with a transmitter and receiver, respectively, operable for interfacing with external devices. Communications component <NUM> may carry communications with routing platform <NUM> and/or external system <NUM>, for example.

Additionally, autonomous routing system <NUM> may include a data store <NUM>, which can be any suitable combination of hardware and/or software, that provides for mass storage of information, databases, and programs employed in connection with implementations described herein. For example, data store <NUM> may be a data repository for operating system <NUM> and/or applications <NUM>.

Autonomous routing system <NUM> may also include a user interface component <NUM> operable to receive inputs from a user of computer device <NUM> and further operable to generate outputs for presentation to the user. User interface component <NUM> may include one or more input devices, including but not limited to a keyboard, a number pad, a mouse, a touch-sensitive display, a navigation key, a function key, a microphone, a voice recognition component, any other mechanism capable of receiving an input from a user, or any combination thereof. Further, user interface component <NUM> may include one or more output devices, including but not limited to a display, a speaker, a haptic feedback mechanism, a printer, any other mechanism capable of presenting an output to a user, or any combination thereof.

In an implementation, user interface component <NUM> may transmit and/or receive messages corresponding to the operation of operating system <NUM> and/or application <NUM>. In addition, processor <NUM> executes operating system <NUM> and/or application <NUM>, and memory <NUM> or data store <NUM> may store them.

As used in this application, the terms "component," "system" and the like are intended to include a computer-related entity, such as but not limited to hardware, firmware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a computer device and the computer device can be a component. One or more components can reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. In addition, these components can execute from various computer readable media having various data structures stored thereon. The components may communicate by way of local and/or remote processes such as in accordance with a signal having one or more data packets, such as data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems by way of the signal.

Various implementations or features may have been presented in terms of systems that may include a number of devices, components, modules, and the like. It is to be understood and appreciated that the various systems may include additional devices, components, modules, etc. and/or may not include all of the devices, components, modules etc. discussed in connection with the figures. A combination of these approaches may also be used.

The various illustrative logics, logical blocks, and actions of methods described in connection with the embodiments disclosed herein may be implemented or performed with a specially-programmed one of a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor may also be implemented as a combination of computer devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Additionally, at least one processor may comprise one or more components operable to perform one or more of the steps and/or actions described above.

Further, the steps and/or actions of a method or algorithm described in connection with the implementations disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, a hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium may be coupled to the processor, such that the processor can read information from, and write information to, the storage medium. Further, in some implementations, the processor and the storage medium may reside in an ASIC. Additionally, the ASIC may reside in a user terminal. Additionally, in some implementations, the steps and/or actions of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a machine readable medium and/or computer readable medium, which may be incorporated into a computer program product.

In one or more implementations, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored or transmitted as one or more instructions or code on a computer-readable medium. A storage medium may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs usually reproduce data optically with lasers.

While implementations of the present disclosure have been described in connection with examples thereof, it will be understood by those skilled in the art that variations and modifications of the implementations described above may be made without departing from the scope hereof. Other implementations will be apparent to those skilled in the art from a consideration of the specification or from a practice in accordance with examples disclosed herein.

Claim 1:
A method (<NUM>) of autonomously controlling movement of a plurality of delivery vehicles, comprising:
generating, by a processor (<NUM>), a plurality of different routing passes (<NUM>) for a set of orders to be delivered by the plurality of delivery vehicles according to a routing plan (<NUM>) specifying a plurality of stops for each delivery vehicle to deliver the orders, each routing pass (<NUM>) including a set of parameters having different values, using one or more business rules (<NUM>) that describe a set of allowed values for one or more of the parameters;
executing, by the processor (<NUM>), each of the plurality of routing passes (<NUM>) on a routing platform (<NUM>) configured to generate a routing plan (<NUM>) for the plurality of delivery vehicles corresponding to a single routing pass (<NUM>) for the set of orders, wherein executing each of the plurality of routing passes (<NUM>) on the routing platform (<NUM>) comprises concurrently executing multiple routing passes (<NUM>);
applying, by the processor (<NUM>), a comparison rule set (<NUM>) that assigns a score to each routing plan (<NUM>) corresponding to a respective one of the plurality of routing passes (<NUM>);
selecting, by the processor (<NUM>), one of the plurality of routing passes (<NUM>) based on the score of the corresponding routing plan (<NUM>); and
dispatching the selected routing pass (<NUM>) via the routing platform (<NUM>) for the set of orders.