Computer systems are widely used for many applications in today's digital environment. In many instances, computer applications perform computationally intensive tasks to derive usable results for real-world, practical applications. This may include situations that require analysis of large amounts of data, or situations where the computer application performs computations on a large number of variables, taking into consideration multiple rules and constraints, to derive usable results for a real-world, practical application. Routing of items in a network is one such example of a real-world, practical application whereby multiple variables and constraints are to be considered to determine optimal routes of the items from providers to destinations.
Features of the present disclosure are illustrated by way of example and not limited in the following figure(s), in which like numerals indicate like elements, in which:
For simplicity and illustrative purposes, the present disclosure is described by referring mainly to embodiments. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. It will be readily apparent however, that the present disclosure may be practiced without limitation to these specific details. In other instances, some methods and structures have not been described in detail so as not to unnecessarily obscure the present disclosure.
Throughout the present disclosure, the terms “a” and “an” are intended to denote at least one of a particular element. As used herein, the term “includes” means includes but not limited to, the term “including” means including but not limited to. The term “based on” means based at least in part on.
Disclosed herein are apparatuses and methods to identify a fulfillment plan regarding delivery of items in multiple orders to their intended destinations in a manner that maximizes compliance with a plurality of factors pertaining to the delivery of the items. Generally speaking, the identified fulfillment plan may be the best plan from among a plurality of candidate fulfillment plans. That is, the identified fulfillment plan may be the plan under which the items may be delivered in a manner that results in minimized costs, minimized delivery times, minimized violations of rules, and/or a combination of minimized costs, minimized delivery times, and/or minimized violations of rules among the candidate fulfillment plans. In addition or in other examples, the identified fulfillment plan may be defined as a fulfillment plan that results in the items being delivered in a substantially optimized manner as may be determined within a certain amount of time and/or a certain number of iterations.
The apparatuses disclosed herein may generate a rule-based model of a distributed order fulfillment problem and may solve that problem to identify the fulfillment plan. That is, the apparatuses disclosed herein may model the order fulfillment problem as a network of potential providers, potential intermediaries, and a group of unfilled orders. In addition, the apparatuses may implement a heuristic method to solve the order fulfillment problem in a manner that may result in compliance with a plurality of factors pertaining to the delivery of the items in the orders being maximized among the possible fulfillment plans. Particularly, the apparatuses disclosed herein may generate a plurality of candidate fulfillment plans using respective random decision variables, may calculate evaluation values for the candidate fulfillment plans, and may select the best fulfillment plan based upon the calculated evaluation values.
Items, such as goods, packets of data, etc., may often be provided by at least one of a plurality of providers and may traverse at least one of a plurality of intermediaries prior to reaching a final destination. As such, the items may take any of a plurality of paths from the providers to the destinations through the intermediaries. The multiple paths may be associated with different monetary costs, different delivery times, rules, and the like, with respect to each other. In this regard, delivering the items via one of the paths instead of another one of the paths may result in higher costs, longer delivery times, and/or violations of rules. Selection of a path that is associated with higher costs, longer delivery times, and/or that violates a rule may thus result in inefficient delivery of the items. That is, for instance, selection of a particular path may result in the items being provided by a particular provider and/or traversing a particular intermediary that the items would not have traversed had the path that results in minimized costs, minimized delivery times, and/or minimized violations of rules been utilized instead of the selected particular path. Improper selection of a particular path may thus result in an inefficient use of the providers and/or the intermediaries.
The apparatuses and methods disclosed herein may determine a plurality of candidate fulfillment plans, may compare the candidate fulfillment plans with respect to each other, and may select one of the candidate fulfillment plans as the fulfillment plan for delivering the items over the network. Particularly, for instance, an evaluation value (or equivalently, an evaluation score) for each of the candidate fulfillment plans may be calculated and may be compared with respect to each other to identify the candidate fulfillment plan corresponding to a highest level of compliance with a plurality of factors in the delivery of the items. In addition, information pertaining to the identified candidate fulfillment plan may be outputted such that the items may be delivered according to the identified candidate fulfillment plan. By identifying the candidate fulfillment plan having the highest level of compliance with the plurality of factors in the delivery of the items and instructing compliance with the identified candidate fulfillment plan, the items may be delivered with fewer violations of sets of rules and constraints. In this regard, the providers and/or the intermediaries may be utilized in a relatively more efficient as well as compliant manner in the delivery of the items.
Additionally, a distributed order management problem may be a NP-hard problem that may require a great deal of computational resources and time. The apparatuses and methods disclosed herein may decompose the distributed order management problem into subtasks and may solve the subtasks individually, which may increase the computational efficiency of the apparatuses as compared with apparatuses that do not decompose the distributed order management problem. This may result in a reduction in processing time and usage of computational resources in determining the fulfillment plan for the delivery of items.
With reference first to
The network 100, which is also referenced herein as an infrastructure, is depicted as including a plurality of providers 102-1 to 102-N (which are referenced herein collectively as providers 102), a plurality of intermediaries 110-1 to 110-M (which are referenced herein collectively as intermediaries 110), and a plurality of destinations 120-1 to 120-P (which are referenced herein collectively as destinations 120). The variables “N,” “M,” and “P” may each represent a value greater than 1. Additionally, connections 104 are depicted between the providers 102 and the intermediaries 110 and connections 106 are depicted between the intermediaries 110 and the destinations 120.
Generally speaking, the network 100 is a network over which items may be delivered from the providers 102 to the destinations 120 via the intermediaries 110. The items may be packets of data, products that are sold in commerce, and the like. In examples in which the items are packets of data, the providers 102 may be servers, data storage locations, service providers, or the like that may communicate the packets of data over a communications network, such as the Internet. In these examples, the intermediaries 110 may be network components, such as routers, switches, servers, data centers, or the like, through which the packets of data from the providers 102 may be routed or traversed. In addition, the destinations 120 may be computing devices that are assigned with respective IP addresses that may be used as destination addresses for the data packets from the providers 102.
In examples in which the items are products, the providers 102 may be physical stores, warehouses, etc., at which the products may be stored and from which the products may be provided. In addition, the intermediaries 110 may be distribution centers, product shipping companies, etc., that may facilitate or may otherwise be involved in the delivery of the products to the destinations. In some examples, the same physical store, warehouse, distribution center, etc., may be considered to be both a provider 102a and an intermediary 110a. The destinations 120 may be businesses, homes, etc., to which the products may be delivered.
As shown in
According to examples, an apparatus 130 may receive orders for the items to be delivered to the destinations 120. For instance, the apparatus 130 may provide a portal or user interface through which a user may place the orders for the items. In other examples, the apparatus 130 may receive the orders for the items from another apparatus or service. In any regard, delivery of the items may be construed as an order fulfillment problem and the apparatus 130 may include a processor that may build a rule-based model, e.g., a model that may be specified by rules, of the order fulfillment problem. That is, the processor may model the order fulfillment problem as a network of potential providers, potential intermediaries, and a group of unfilled orders. In addition, the processor may implement a heuristic method to solve the order fulfillment problem in a manner that may result in compliance with a plurality of factors pertaining to the delivery of the items in the orders being maximized among the possible fulfillment plans.
The apparatus 130 may also output instructions for the items to be delivered over the network 100 according to the fulfillment plan that is determined to maximize compliance with the plurality of factors among the candidate fulfillment plans. For instance, the apparatus 130 may output the instructions to the providers 102 over a data network 140, which may be the Internet, a cellular network, a telephone network, etc. In response to receipt of the instructions from the apparatus 130, the providers 102 may initiate delivery of the items. By way of example in which the items are data packets, the providers 102 may insert the appropriate routing and destination IP addresses as well as any other information into the data packets to cause the data packets to be routed through a particular intermediary 110-1 and to a particular destination 120-1. In another example in which the items are products, the providers 102 may mark the products to be delivered to a particular intermediary 110-1 and to a particular destination 120-1.
Turning now to
As shown, the apparatus 200 may include a processor 202 that may control operations of the apparatus 200. The processor 202 may be a semiconductor-based microprocessor, a central processing unit (CPU), an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), and/or other hardware device. Although the apparatus 200 has been depicted as having a single processor 202, the apparatus 200 may include multiple processors 202 that may perform multiple processing operations concurrently.
The apparatus 200 may also include a memory 210 that may have stored thereon machine readable instructions 212 (which may also be termed computer readable instructions) that the processor 202 may execute. The memory 210 may be an electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions as well as other data. The memory 210 may be, for example, Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like. The memory 210, which may also be referred to as a computer readable storage medium, may be a non-transitory machine-readable storage medium, where the term “non-transitory” does not encompass transitory propagating signals. Although the apparatus 200 has been depicted with a single memory 210, the apparatus 200 may include multiple memories 210 that may be included in the apparatus 200 and/or may be external to the apparatus 200.
The processor 202 may fetch, decode, and execute the instructions 214 to generate random decision variables. A random decision variable may be defined as an artificially defined array with random values ranging between 0 and 1, which may be used to generate a candidate fulfillment plan as discussed herein. In addition, the processor 202 may fetch, decode, and execute the instructions 216 to initiate or select a candidate group of random decision variables. The processor 202 may fetch, decode, and execute the instructions 218 to manage counters, e.g., an outer counter and an inner counter, which are also referenced herein as a first counter and a second counter, respectively. The processor 202 may fetch, decode, and execute the instructions 220 to construct a population based upon a selection of decision variables with a probability determined from a candidate group of random decision variables. The processor 202 may fetch, decode, and execute the instructions 222 to generate candidate fulfillment plans to fulfill orders for delivery of items through use of the random decision variables. Thus, for instance, a separate random decision variable may be used to generate a separate candidate fulfillment plan.
The processor 202 may fetch, decode, and execute the instructions 224 to calculate an evaluation value (which is also referenced herein as a score) for each of the generated candidate fulfillment plans. The processor 202 may fetch, decode, and execute the instructions 226 to identify the candidate fulfillment plan having the evaluation value that corresponds to a maximized compliance with a plurality of factors pertaining to the delivery of items. For instance, the processor 202 may identify the candidate fulfillment plan having the lowest evaluation value. The processor 202 may fetch, decode, and execute the instructions 228 to output instructions to deliver the items over the network 100 according to the identified candidate fulfillment plan.
The processor 202 may output the instructions through an interface 204, which may include hardware components, software components, or a combination of hardware and software components to facilitate the communication of data from and to the processor 202. According to examples, the interface 204 may be an interface to an external network such as the Internet.
As also shown in
The memory 210 may also have stored thereon order data 234, provider data 236, and intermediary data 238. The order data 234 may identify orders for items that are to be delivered over the network 100. The order data 234 may identify orders that have been fulfilled and orders that have not yet been fulfilled. The order data 234 may also include information associated with the orders, such as a list of items (e.g., data packets, products, etc.) included in the orders, quantities of each of the items in the orders, a delivery address or delivery addresses of the orders (e.g., the IP address of the destination 120-1, the postal address of the destination 120-1, etc.), rules associated with the orders (e.g., all of the ordered items are to arrive together and in a certain sequence, all of the ordered items should arrive within a certain timeframe, the number of items associated with the order being sent to the shipping address should be less than a certain number, etc.), and the like.
The provider data 236 may identify the providers 102 in the network 100. The provider data 236 may also include an identification of the data stored/inventories of the providers 102 and/or access to the data stored/inventories of the providers 102. The provider data 236 may also include information associated with the providers 102 such as, for each of the particular providers 102:
The intermediary data 238 may identify the intermediaries 110 in the network 100. The intermediary data 238 may also include information associated with the intermediaries 110 such as, for each of the intermediaries 110, a delivery address, rules associated with the intermediary 110 (e.g., all items sent from an intermediary 110 to the same destination address should be sent as one package), etc.
The memory 210 may further have stored thereon a transit parameters table 240 that may provide related parameters of transiting items from the providers 102 to the intermediaries 110 and from the intermediaries 110 to the destinations 120 for the orders. The related parameters may include delivery cost, delivery time, etc. Examples of delivery cost may include costs associated with routing packets through an IP network, shipping fees, or the shipping distance, or any other parameters that directly relate to the cost of handling items. In instances in which a provider 102-1 is both a provider and an intermediary in a candidate fulfillment plan, the transit cost within such a provider is zero.
The delivery time may be defined as a parameter that indicates the delivery time of transiting items from a provider to an intermediary and/or from an intermediary to a destination. In instances in which a provider 102-1 is both a provider and an intermediary 110-1 for the provider 102-1 in a candidate fulfillment plan, the transit time for the provider and the intermediary is zero. Information associated with the transit parameters table may include for instance:
The memory 210 may further have stored thereon a plurality of rules 242 that may specify how the unfilled orders identified in the order data 234 are to be grouped, which providers 102 should be selected as potential providers of the items identified in the orders, etc. Examples of the rules on grouping the orders may include:
The rules 242 may also specify particular rules that may be enforced on the delivery of the items. A user, a provider 102, and/or an intermediary 110 may specify the rules 242 through, for instance, a user interface, e.g., a website. Examples of the rules on each of the orders may include:
The rules 242 may further specify particular rules that are applicable to the providers 102. The providers 102 may specify these rules 242 through, for instance, a user interface, e.g., a website. Examples of these rules may include:
The rules 242 may further specify particular rules that are applicable to the intermediaries 110. Examples of these rules may include: If a store is chosen as a provider, the store has to ship items directly to the destination. In this case, for example, the transit from the store to the any potential intermediaries may be restricted, e.g., the items may only be allowed to transit within the store.
The rules 242 may further specify particular rules that are applicable to the shipping methods. Examples of these rules may include: for the same transit connection, multiple intermediaries may be selected to send a package containing items. Shipping method rules may be used to guide which intermediary is to be selected for a particular connection. For instance, the intermediary having the lowest transit cost may always be selected for the same type of shipping. As another example, the intermediary having the fasted delivery time may always be selected.
The rules 242 may further specify particular rules that are applicable to an overall goal in the fulfillment of the orders. Examples of these rules may include:
As discussed herein, the processor 202 may use the information 230-242 stored in the memory 210 in generating the rule-based model used to generate and select the fulfillment plan regarding delivery of the items. Generally speaking, the process of handling the rules 242, the process of constructing an order fulfillment network, and generating the rule-based model may not be separable and may thus be operated together. In addition, given an order, the processor 202 may detect and apply active rules to construct the order fulfillment network and generate the rule-based model. It should be noted that the rules 242 may be updated dynamically.
In addition, the processor 202 may detect and handle conflicting rules. For instance, the processor 202 may determine that one type of rule supersedes other types of rules. An example of conflicting rules is that, one of the user rules requires minimization of delivery time, but one of the provider rules considers minimizing cost as the highest priority rule. The two different goals defined by the two rules could conflict with each other. In this example, the processor 202 may prioritize the user rule higher than the provider rule or vice versa to avoid the conflicting rules.
The processor 202 may generate the rule-based model used to identify the fulfillment plan as a linear integer problem, e.g., a distributed order management problem, and may apply a linear programming method to solve the problem. As the number of the components contained in the network grows, the complexity of the rule-based model grows exponentially and leads to a large scale linear integer problem, which is a NP-hard problem (non-deterministic polynomial-time hard). Considering that, the distributed order management problem discussed herein may involve a relatively large number of unfulfilled orders, providers, and intermediaries, as well as complex rules, the processor 202 may apply a heuristic method to solve this large scale and complex problem.
The memory 210 may further have stored thereon a plurality of factors 244 pertaining to the delivery of the items. That is, for instance, the processor 202 may determine the factors 244 during generation of the candidate fulfillment plans and may store the factors 244 corresponding to each of the candidate fulfillment plans. The factors 244 for a candidate fulfillment plan may include, for instance, a total number of orders that have an infeasible fulfillment plan, a total number of orders that are not fulfilled, a total number of orders that violate a delivery constraint, a total number of orders that violate an item constraint, and the like. Orders that have an infeasible fulfillment plan may be defined as orders that may be fulfilled by violating one or more existing constraints. Orders that are not fulfilled may be defined as orders that may not be fulfilled even by relaxing constraints. By way of example, an order for a product may not fulfilled in instances in which the product is not available anywhere. As discussed herein, the factors 244 may be included in an evaluation function applied to the candidate fulfillment plans to determine evaluation values of the candidate fulfilment plans.
Various manners in which the apparatus 200, and particularly, the processor 202, may operate are discussed in greater detail with respect to the methods 300, 400, and 500 depicted in
With reference first to
A decision variable may not be a naturally defined decision variable, but may be an artificially defined array with values between 0 and 1. The values in the decision variable may be randomly selected. Particularly, for instance, the decision variable may be a random decision variable, which may be represented as (Xr), and may be an array of random numbers or values as indicated in the following equation (1):
In equation (1) above, xri is a random value generated by an iteration of a chosen heuristic optimization algorithm, 0<xri≤1 for all i, Ns is a total number of potential providers 102 and K is total number of orders to be fulfilled. In some examples, the “artificial” decision variable, such as the random decision variable (Xr), may be constructed to map a complex decision variable of an original problem into a well-defined high dimension decision variable with a [0,1] boundary on each dimension such that the decision variable may fit into a class of well-developed heuristic algorithms, such as the genetic algorithm, the simulated annealing algorithm, and the like.
In addition, Xr in equation (1) above may be construed as including three subsets. A first subset of the decision variable Xr may include the values in the array {x(2N
At block 304, the processor 202 may execute the instructions 224 to calculate evaluation values for the candidate fulfillment plans. The evaluation value (which is equivalently recited herein as a score) for a candidate fulfillment plan may be determined through application of an evaluation function (which is equivalently recited herein as an objective function), on factors 244 of the candidate fulfillment plan. Particularly, for instance, the processor 202 may calculate the evaluation value for a candidate fulfillment plan that was generated using a particular decision variable Xr through application of the following equation (2):
f(Xr)=w1·α1(Xr)+w2·α2(Xr)+w3·α3(Xr)+w4·α4(Xr)/norders+C(Xr)
In Equation (2),
Through application of equation (2) on each of the candidate fulfillment plans, a respective evaluation value (or equivalently, score), may be calculated for each of the candidate fulfillment plans. Thus, for instance, a first fulfillment plan for a group of orders to be fulfilled by a first provider 102-1 and a first intermediary 110-1 may have a first evaluation value, a second fulfillment plan for a group of order to be filled by a second provider 102-2 and a second intermediary 110-2 may have a second evaluation value, and so forth.
At block 306, the processor 202 may execute the instructions 228 to output instructions to deliver the items over the network 100 according to the candidate fulfillment plan having the evaluation value that corresponds to a maximized compliance with the plurality of factors among the calculated evaluation values to maximize compliance with the plurality of factors in the delivery of the items. As noted above, the plurality of factors may include the factors included in equation (2). In addition, the processor 202 may output the instructions to the provider or providers 102 identified in the selected candidate fulfillment plan via the interface 204. In response to receipt of the instructions, the provider(s) 102 may initiate delivery of the items through the selected intermediary or intermediaries 110.
By way of example in which the items are data packets, the provider(s) 102 may insert appropriate routing and destination address information into the data packets or packages containing the data packets such that the data packets are delivered through the selected intermediary or intermediaries 110. In other examples in which the items are products, the provider(s) 102 may set up the products to be delivered to the selected intermediary or intermediaries 110. In any of these examples, the items may be delivered to the destination or destinations 120 through the network 100 according to the selected fulfillment plan.
With reference now to
At blocks 404 and 406, respectively, the processor 202 may execute the instructions 218 to set an outer counter (first counter) to “1” and to set an inner counter (second counter) to “1”.
The processor 202 may execute blocks 408-412 for the random decision variable indicated by the inner counter contained in the candidate group of R random decision variables. Particularly, at block 408, the processor 202 may execute the instructions 222 to generate a candidate fulfillment plan using the random decision variable. Generally speaking, a fulfillment plan may be a plan to assign items to be delivered from a chosen provider or providers 102 to a destination or destinations 120 via a chosen intermediary or intermediaries 110. In addition, the processor 202 may use the subsets of random values in the random decision variable to determine the sequence in which multiple orders in the candidate fulfillment plan are to be processed, to determine the provider or providers 102 that are to provide the items in the orders, and to determine the intermediary or intermediaries 110 that are to handle the items in the orders.
With reference now to method 500 in
According to examples, the processor 202 may determine the first order to be processed from the random values assigned to the orders. That is, for instance, the sequence of the orders may be based upon where the random values lie with respect to particular ranges of values. To illustrate this process, the following example is provided in which there are a total of three unfulfilled orders, Order A, Order B, and Order C, to be processed, i.e., K=3, with {xr(2N
Continuing with the example, the second order to be processed in the sequence may be determined by the value of xr(2N
At block 504, the processor 202 may process a first order in the sequence of orders generated at block 502 to determine a provider or providers 102 for the items in the first order using a second subset of the random decision variable. In other words, the processor 202 may assign valid providers 102 for the order that may be able to supply the items in the order satisfy rules and constraints associated with the order. For instance, the processor 202 may construct a list of valid providers 102 that include providers 102 that are able to meet a delivery time constraint, satisfy other rules, such as shipping restriction rules, etc. By way of particular example, in which n represents the total number of valid providers 102 in the list; if np=0, the processor 202 may mark the order as having none of the items fulfilled. In this event, the processor 202 may store an indication that the order has not been fulfilled and the processor 202 may process the next order in the sequence of orders.
However, if there is at least one valid provider 102 for the order, the processor 202 may assign the valid providers 102 one-by-one according to a sequence determined by the second subset of the random decision variable Xr, {xr1, xr2, . . . , xrN
then the jth valid provider 102 in the list is identified.
Following block 504, the processor 202 may have identified a valid provider 102, multiple valid providers 102, or no valid providers. In addition, the processor 202 may have stored this information as factors 244 in the memory 210.
At block 506, the processor 202 may determine an intermediary or intermediaries 110 to handle the currently processed order. In other words, the processor 202 may assign an intermediary 110 to each of the valid providers 102 determined at block 504. For instance, the processor 202 may set up a list of valid intermediaries 110 such that the transit from any listed intermediary 110 to the processed order may not be restricted. By way of particular example, in which nh represents the total number of intermediaries 110 in the list, the processor 202 may assign the valid intermediaries in the following manner.
m=min(number of providers assigned to the order, customer specified max number of packages allowed to ship for fulfilling the order)
then the jth intermediary in the valid intermediary list is picked up;
At block 508, the processor 502 may store various information pertaining to the generation of the candidate fulfillment plan using the random decision variable. The various information (or factors 244) pertaining to the candidate fulfillment plan may include, for instance, a total number of orders that have an infeasible fulfillment plan, a total number of orders that are not fulfilled, a total number of orders that violate a delivery constraint, a total number of orders that violate an item constraint, etc.
At block 510, the processor 202 may determine whether another order is to be processed. That is, the processor 202 may determine whether there is another unfilled order to be processed. In response to a determination that another order is to be processed, the processor 202 may select the next order in the sequence of orders generated at block 502. In addition, the processor 202 may repeat blocks 504-508 on the next order in the sequence. The processor 202 may also repeat blocks 504-512 for any additional orders in the sequence until the processor 202 determines that all of the orders in the sequence have been processed, at which point the method 500 may end as indicated at block 514.
According to embodiments, the processor 202 may implement a feasibility improvement process for the orders in the candidate fulfillment plan. That is, the processor 202 may implement the feasibility improvement process to improve the feasibility of the orders that have infeasible fulfillment plans. An order having an infeasible fulfillment plan may be defined as an order that is not fully fulfilled, an order for which the fulfillment plan of the order violates a delivery constraint or a maximum package constraint, etc. The processor 202 may implement the feasibility improvement process for an order with an infeasible fulfillment plan as follows.
If the order is not fully fulfilled, try to fulfill the order by ignoring the delivery time as follows.
If the fulfillment plan of the processed order violates the delivery constraint or the maximum packages constraint, the processor 202 may execute the following feasibility improvement process:
Following implementation of the method 500, the processor 202 may have stored factors 244 pertaining to the orders in a candidate fulfillment plan in the memory 210. The factors 244 may include factors that were obtained with or without implementation of the feasibility improvement process.
With reference back to
At block 412, the processor 202 may record the candidate fulfillment plan generated at block 408 and the associated evaluation of the candidate fulfillment plan, for instance, in the memory 210. During a first iteration of blocks 408-412, the processor 202 may simply record the generated fulfillment plan. In further iterations, however, the processor 202 may update the recorded fulfillment plan and the associated evaluation to be the best fulfillment plan, e.g., the fulfillment plan that has the maximized compliance of the fulfillment plans that have been generated during the iterations.
At block 414, the processor 202 may execute the instructions 218 to increment the inner counter by 1. In addition, at block 416, the processor 202 may determine whether the inner counter is greater than R, e.g., whether each of the candidate groups of R random decision variables has been processed. In response to a determination that the inner counter is less than R, the processor 202 may repeat blocks 408-412 for the decision variable indicated by the inner counter, which has been increased by one since the prior iteration of blocks 408-412. In addition, the processor 202 may repeat blocks 408-416 until a determination is made at block 416 that the inner counter is greater than R.
In response to a determination at block 416 that the inner counter is greater than R, at block 418, the processor 202 may execute the instructions 218 to increment the outer counter by 1. In addition, at block 420, the processor 202 may determine whether the outer counter exceeds a certain maximum number of iterations. The certain maximum number of iterations may be user-defined and may be set to prevent the method 400 from repeating without stop and/or to generate and evaluate a certain number of candidate fulfillment plans. In response to a determination at block 420 that the maximum number of iterations has not been reached, the processor 202 may construct a population by selecting R random decision variables with a probability from the current candidate group of R random decision variables as indicated at block 422. The probability may be provided by a chosen heuristic optimization algorithm, e.g., the genetic algorithm, the simulated annealing algorithm, and the like. The same decision variables contained in the candidate group may be selected multiple times.
At block 424, the processor 202 may generate a new candidate group of R random decision variables given the population constructed at block 422. In addition, the processor 202 may repeat blocks 406-424 using the new candidate group of R random decision variables. In this regard, at block 412, the currently best candidate fulfillment plan and the associated evaluation may be updated as additional best candidate fulfillment plans are identified.
With reference back to block 420, in response to a determination that the outer counter exceeds the maximum number of iterations, the processor 202 may execute the instructions 226 to identify the candidate fulfillment plan having the evaluation value that corresponds to a maximized compliance with the plurality of factors identified in the evaluation function. By way of example, the processor 202 may determine that the candidate fulfillment plan having the lowest evaluation value determined through application of the evaluation function defined by equation (2) may have the maximized compliance. In other words, the processor 202 may identify the candidate fulfillment plan as the candidate fulfillment plan that was identified as the best candidate fulfillment plan through multiple iterations of block 412 as discussed above. In any regard, the processor 202 may identify the candidate fulfillment plan at block 426 by passing the best candidate fulfillment plan identified at block 412.
At block 428, the processor 202 may record the candidate fulfillment plan as the plan that is to be implemented to deliver the items in the orders. In addition, at block 430, the processor 202 may execute the instructions 228 to output instructions to cause implementation of the identified fulfillment plan. That is, for instance, the processor 202 may output instructions via the interface 204 to the provider or providers 102 selected in the identified fulfillment plan and the provider or providers 102 may initiate delivery of the items in the orders according to the instructions.
Some or all of the operations set forth in the methods 400 and 500 may be contained as utilities, programs, or subprograms, in any desired computer accessible medium. In addition, the methods 400 and 500 may be embodied by computer programs, which may exist in a variety of forms both active and inactive. For example, they may exist as machine readable instructions, including source code, object code, executable code or other formats. Any of the above may be embodied on a non-transitory computer readable storage medium.
Examples of non-transitory computer readable storage media include computer system RAM, ROM, EPROM, EEPROM, and magnetic or optical disks or tapes. It is therefore to be understood that any electronic device capable of executing the above-described functions may perform those functions enumerated above.
Although described specifically throughout the entirety of the instant disclosure, representative examples of the present disclosure have utility over a wide range of applications, and the above discussion is not intended and should not be construed to be limiting, but is offered as an illustrative discussion of aspects of the disclosure.
What has been described and illustrated herein is an example of the disclosure along with some of its variations. The terms, descriptions and figures used herein are set forth by way of illustration only and are not meant as limitations. Many variations are possible within the spirit and scope of the disclosure, which is intended to be defined by the following claims—and their equivalents—in which all terms are meant in their broadest reasonable sense unless otherwise indicated.
The present application claims the benefit of priority to U.S. Provisional Application Ser. No. 62/469,501 having the title “DECOMPOSITION OF COMPUTATIONAL PROCESSING FOR NETWORK ROUTING AND OTHER COMPUTATIONAL TASKS,” filed on Mar. 9, 2017, the disclosure of which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62469501 | Mar 2017 | US |