Estimation of node processing capacity for order fulfillment

Techniques for facilitating estimation of node processing capacity values for order fulfillment are provided. In one example, a computer-implemented method can comprise: generating, by a system operatively coupled to a processor, a current processing capacity value for an entity; and determining, by the system, a future processing capacity value for the entity based on the current processing capacity value and by using a future capacity model that has been explicitly trained to infer respective processing capacity values for the entity. The computer-implemented method can also comprise fulfilling an order of an item, by the system, based on the future processing capacity value.

BACKGROUND

The subject disclosure relates to information processing, and in particular relates to node processing capacity for order fulfillment.

SUMMARY

According to an embodiment, a computer-implemented method can comprise generating, by a system operatively coupled to a processor, a current processing capacity value for an entity. The computer implemented method can also comprise determining, by the system, a future processing capacity value for the entity based on the current processing capacity value and by using a future capacity model that has been explicitly trained to infer respective processing capacity values for the entity. Further, the computer implemented method can also comprise fulfilling an order of an item, by the system, based on the future processing capacity value.

According to another embodiment, a system is provided. The system comprises a processor that executes computer executable components stored in memory. The computer executable components include an order intake component that receives incoming order information. Further, the computer executable components also include a future capacity component that operates according to a future capacity model that has been implicitly and/or explicitly trained to infer respective processing capacity of entities associated with a production processing chain associated with the incoming order information. Further, the computer executable components also include a scheduling component that processes the incoming order information based on an inference regarding a respective processing capacity of one or more of the entities.

According to another embodiment, a computer program product for facilitating estimation of node processing capacity values for order fulfillment is provided. The computer program product can comprise a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processing component to cause the processing component to schedule an order based on inferences regarding respective capacities of entities. The program instructions when executed by the processing component further cause the processing component to receive incoming order information. Further, the program instructions when executed by the processing component further cause the processing component to utilize a future capacity model that has been explicitly and implicitly trained to infer respective processing capacity values of entities associated with a production and fulfillment processing chain associated with the incoming order information. Additionally, the program instructions when executed by the processing component further cause the processing component to schedule the order based on inferences regarding respective capacities of the entities.

DETAILED DESCRIPTION

The subject disclosure is directed to computer processing systems, computer-implemented methods, apparatus and/or computer program products that facilitate estimation (without direct human involvement) of processing node device processing capacity to facilitate order fulfillment. Humans are unable to perform the embodiments described here as they include, but are not limited to, receiving incoming order information for products and/or services using a future capacity model that has been trained to infer respective processing capacity values for entities associated with fulfillment processing chain associated with the order, and scheduling and processing the order to fulfillment based on inferences regarding the respective capacities of the entities, wherein the entities are respectively one of: an individual, a set of individuals, or a machine or set of machines. In particular, establishing and using a future capacity model that has been explicitly and implicitly trained to infer respective processing capacity values for entities associated with fulfillment processing chain associated with the order, can entail processing countless thousands of historical records relating to past histories of entities to determine their respective processing capabilities. For instance, inferring respective processing capacity values for entities can involve developing artificial neural networks based on the capabilities of each entity (or, one or more entities) in the fulfillment processing chain. Artificial neural networks can comprise pluralities of input nodes connected, via pluralities of connections, to pluralities of intermediate hidden nodes. The pluralities of intermediate hidden nodes in turn can be connected, via further pluralities of connections, to terminal nodes. Each of the pluralities of connections (or, one or more connections) that connect the pluralities of input nodes to intermediate hidden nodes, and intermediate hidden nodes to terminal nodes can be associated with transition probabilities that can be determined using, for example, normalized exponential functions, such as a softmax function. There can be numerous connections between the various input nodes, intermediate hidden nodes, and terminal nodes. Further, since transition probabilities can change as entities, for example, become more proficient at tasks or, in the case of machinery, become less productive due to obsolescence and/or wear and tear on component parts, determination of transition probabilities can be computationally intense.

One or more aspects of the subject disclosure is directed to computer processing systems, computer-implemented methods, apparatus and/or computer program products that facilitate efficiently, effectively, and automatically (e.g., without direct human involvement) generating, by a system operatively coupled to a processor, a current processing capacity value for an entity, determining, by the system, a future processing capacity value for the entity based on the current processing capacity value, and fulfilling or scheduling, by the system, an order of an item for sale based on the future processing capacity value. The computer processing systems, computer-implemented methods, apparatus and/or computer program products employ hardware and/or software to solve problems that are highly technical in nature. For example, problems related to facilitating estimation of node or entity capacity values for order fulfillment based on developing artificial neural networks that model node and entity capacities, are problems that are not abstract and cannot be performed as a set of mental acts by a human. For example, a human, or even thousands of humans, cannot efficiently, accurately and effectively manually develop an artificial neural network to generate a current processing capacity value for an entity or processing node, determine a future processing capacity value for the entity or processing node based on the current processing capacity value, and thereafter fulfill or schedule an order of an item for sale based on the determined future processing capacity value.

Constant changes with respect to newer machinery, faster processors in computing devices, more capable labor force (e.g., through continual training and/or on-the-job acquired expertise) are not taken into account in optimization of order processing and/or order fulfillment. In one or more embodiments an effective e-commerce order fulfillment strategy typically takes into consideration backlog days, that is, how many days orders can realistically be shipped or processed after the order has been sourced to a particular processing node device. The accuracy of the computed backlog can be crucial and critical to a fulfillment system comprising a network of processing node devices.

Thus, for a particular processing node device and an associated mix of other data related to supply chain dynamics, labor capabilities and scheduling (e.g., vacation schedules, scheduled and unscheduled sick days, etc.), machine maintenance schedules, etc., the backlog associated with the device can be determined based on the tasks already sourced to the device and the daily processing capacity of the processing node device (e.g., the number of tasks the processing node device can process in a defined time period). In current fulfillment systems the daily processing capacity of a processing node device can be estimated and predefined utilizing historical data representing a capacity of the particular processing node device. For instance, historical data can indicate that since a processing node device can have processed a first specified quantity of assigned tasks over a prior defined time period (e.g., previous 6 hours, previous 12 hours, previous 24 hours, previous 7 days, previous 30 days, . . . ), going forward, the processing node device at issue should be predictably be able to process a second specified quantity of assigned tasks in a defined future time period. Such an optimization scheme however can be subject to the criterion that each task (or, in some embodiments, one or more tasks) is identical and is being processed using an identical quantum of processing resources. In reality however the processing resources used by a processing node device to accomplish differing tasks can vary widely and can be based on an experience quotient value and proficiency quotient value. The number of tasks that can be processed by disparate processing node devices in a defined time interval can thus be significantly different, and as a consequence a backlog determination can largely deviate from the actual number of tasks that are processed by a processing node device.

FIG. 1illustrates a block diagram of an example, non-limiting system100that facilitates estimation of node processing capacity values for order fulfillment in accordance with one or more embodiments described herein. Aspects of systems (e.g., non-limiting system100and the like), apparatuses or processes explained in this disclosure can constitute machine-executable component(s) embodied within machine(s), e.g., embodied in one or more computer readable mediums (or media) associated with one or more machines. Such component(s), when executed by the one or more machines, e.g., computer(s), computing device(s), virtual machine(s), etc. can cause the machine(s) to perform the operations described.

As illustrated, non-limiting system100can comprise capacity engine102, processor104, memory106and/or storage108. In some embodiments, one or more of the capacity engine102, processor104, memory106and/or storage108can be communicatively and/or electrically coupled to one another to perform one or more functions of system100. In some embodiments, capacity engine102can receive as input110historical data representing capacity information regarding the quantity of assigned tasks that a processing node device has been able to complete over a prior defined time period (e.g., previous 6 hours, previous 12 hours, previous 24 hours, previous 7 days, previous 30 days, . . . ), supply chain dynamic data, labor capabilities and scheduling data, machine maintenance schedule data, as well as new data representing feedback data from ongoing, continuing and continual use of capacity engine102.

In accordance with an embodiment, capacity engine10:2on receiving historical data and/or new data can, for example, through Fourier analysis, remove a periodic signal from a time series based on the historical data and/or new data to generate an updated time series. In accordance with an additional embodiment, capacity engine102can also apply a decay function, such as an exponential decay function, to the updated time series to generate a predicted capacity value for the processing node device.

Further, in an additional embodiment, capacity engine102can add to the predicted capacity value an average processing capacity value for a defined period of time that represents a trend determined, by capacity engine102, for a future time period based at least on the historical data and/or new data. The predicted capacity value can subsequently be output as output112. The predicted capacity value can be used to determine, whether a given processing node device can satisfy a service level agreement (SLA) requirement to meet an entity's expectations. The predicted capacity value can also be used to determine and identify a cheapest sourcing solution, or to avoid directing more orders to already heavily backlogged processing node devices for purposes of workload balancing across a network of processing node devices.

In a further additional embodiment, capacity engine102can perform an optimization process. The optimization process can use backlog day data and a mix of other data related to supply chain dynamics, labor capabilities and scheduling (e.g., vacation schedules, scheduled and unscheduled sick days, etc.), machine maintenance schedules, and the like to determine, whether a given processing node device, based at least on factors such as labor capabilities and scheduling, machine maintenance schedules, supply chain dynamics, and the like, can satisfy a service level agreement (SLA) requirement. A service level agreement can include information regarding whether an ordered product will be delivered in 1-2 days, 5-7 business days, etc. to meet an entity's expectations, while still finding the cheapest source solution, or to avoid sourcing more orders to already heavily backlogged fulfillment processing node devices for purposes of workload balancing across a network of processing node devices. As used in the subject disclosure, an entity can be a user, a business organization, a machine, a computer, equipment, and the like.

On receiving historical data as input110, capacity engine102can determine a processing capacity value associated with a processing node device comprising a network of processing node devices. The processing capacity value can be based on received historical data and/or received new data representing feedback from ongoing, continuing and continual use of system100. The received historical data and received new data can be received as input110. Further, the determined and generated processing capacity value can be dynamically adjusted as time proceeds based on a time aware data prioritization strategy that reflects levels of urgency associated with different days in the order fulfillment paradigm. Days that are more distant in the future from a delivery date are assigned lesser levels of urgency than days that are more proximate to the delivery date. Additionally, the determined and generated processing capacity value can be adjusted as time proceeds based on a processing capacity evolvement pattern that can have been determined from the received historical data as well as the new data received as feedback information.

In accordance with an embodiment, capacity engine102can make backlog determination more accurate. Further, in an additional embodiment, utilization of capacity engine102can improve the accuracy of the determinations of processing capacity values for each node device (or, in some embodiments, one or more node devices) comprising the network of processing node devices, and therefore can additionally make backlog determination more accurate. In an additional embodiment, use of capacity engine102accommodates for proficiency differences that can be associated with differing tasks. As will be appreciated, some tasks can be more complex to perform to completion and thus can take a commensurately longer period of time to process, while other tasks can be relatively simple to process to completion and thus can be completed in shorter durations of time. Capacity engine102does not, as a general rule, base its determinations on the processing capabilities of respective processing node devices, but rather, through feedback, updates determined processing capacity values based on new data which provides for periodic adjustment based on processing capacity evolvement patterns that can have been determined from historical data received as input110.

In the context of historical data, historical data can be stored in a database device of database devices that for the purposes of exposition can be represented as storage108. However, as will be appreciated by those of ordinary skill, historical data can also be obtained as input (e.g., input110) from a multitude of different and disparate database devices that can comprise a network database devices that can be communicatively and operatively coupled to capacity engine102.

In an embodiment, capacity engine102can use the number of tasks assigned to a processing node device to determine a current capacity value for the processing node device. The current capacity value for a processing node device can be determined based at least on a first number representing a first number of unprocessed tasks (e.g., tasks that were unprocessed by the processing node device from a prior time period) at a beginning of a defined time period. To this can be added a second number representing a second number of tasks assigned to the processing node device at the beginning of the defined time period (e.g., tasks that have been assigned to the processing node device at the beginning of the current defined time period), and a third number representing a third number of tasks unprocessed at an end or conclusion of the defined time period. This current capacity value can be output as output112and can be used to predict a future processing capacity value (as discussed in greater detail with reference toFIG. 4) for the processing node device in one or more subsequent time periods.

Capacity engine102in accordance with an embodiment can predict the future processing capacity value for a processing node device in one or more future time periods. Capacity engine102can predict the future processing capacity value by taking into consideration the influence of time. The closer in time to a due date for fulfillment of an order, the more similar the predicted future processing capacity value for the processing node device will be in relation to the determined current capacity value for the due date.

Capacity engine102in accordance with a further embodiment can predict the future processing capacity value for a processing node device in one or more future time periods by considering long-term/short-term patterns that can have been determined from the historical data. Historical processing capacities for each processing node device (or, in some embodiments, one or more processing node devices) in a network of processing node devices can be modeled as a time series, for example, at a hourly, daily, weekly, monthly, . . . time granularity. The determined hourly, daily, weekly, monthly, . . . current processing capacity can then be considered as a value of a time series that shows periodical patterns at different levels, such as, seasonal patterns caused by seasonal adjustments in various factors, such as labor, machine maintenance schedules, and the like.

FIG. 2illustrates another block diagram of an example, non-limiting system that facilitates estimation of node processing capacity values for order fulfillment in accordance with one or more embodiments described herein. Repetitive description of like elements employed in other embodiments described herein is omitted for sake of brevity.

Non-limiting system200can comprise one or more of the components and/or functionality of system100, and vice versa. As illustrated, capacity engine102of system200can comprise learning component202that based at least on historical data and/or new data determines a current processing capacity value for each processing node (or, in some embodiments, one or more processing nodes) that comprises a network of processing nodes. Learning component202can determine the processing capacity for each processing node (or, in some embodiments, one or more processing nodes) by determining for a defined time period (e.g., 1 hour, 2 hours, 4 hours, 6 hours, 12 hours, 24 hours, 1 week, 2 weeks, 3 months, 4 months, 6 months, 12 months, etc.) a number of tasks that had not been processed from a previous defined time period. Learning component202can then add a number of tasks that have currently been assigned to the processing node for processing within the defined time period. Learning component202can then subtract the number of tasks the processing node device was unable to process at the end of the defined time period. The formula used by learning component202to determine the processing capacity for each processing node (or, in some embodiments, one or more processing nodes) is provided as:
PCi,j=(Ni,j−1+Ai,j)−Ui,j+1,
where PC represents a processing capacity for each processing node device (i) for a defined time period j; N represents a number of tasks that have not been processed by the processing node device (i) from a previous defined time period (j−1); A represents a number of tasks that have currently been assigned to the processing node device (i) for processing within the defined time period (j); and U represents a number of tasks that the processing node device is unable to process at the end/commencement of the next defined time period (j+1).

The determination by learning component202of processing capacity values provides a current processing capacity value for a processing node device comprising the network of processing node devices. The current processing capacity value can thereafter also be used to predict a future processing capacity value for the processing node device in one or more future time periods.

Learning component202can also establish a time series model based on historical data comprising a series of data points ranked in a time order from an earliest point to a recent point in time for each processing node device (or, in some embodiments, one or more processing node devices) comprising a network of processing node devices. Learning component202can construct a time series model, for example, by extracting from the historical data the number of tasks that had not been processed for each processing device (or, in some embodiments, one or more processing devices) after the elapse of a first time period (e.g., after the first hour). The number of tasks that had not been processed after the first time period can form an initial data point in the time series model. The number of tasks that had not been processed after the elapse of a second time period (e.g., after the second hour) can form another data point in the time series model. From the historical data, a similar time series model can also be developed for the number of tasks that were processed for each processing device (or, in some embodiments, one or more processing devices). For instance, the number of completed tasks for each processing device (or, in some embodiments, one or more processing devices) at the end of the first hour of elapsed time can be a first data point in the time series mode. The number of completed tasks for each processing device (or, in some embodiments, one or more processing devices) at the end of the second hour of elapsed time can be a second data point in the time series. The time series model established by learning component202can provide a time granularity that can be used by capacity engine102to determine the current processing capacity value for processing node devices included in the network of processing node devices. Moreover, the time series model can represent periodicity patterns such as seasonal variations caused by seasonal adjustments associated with tasks supplied to processing node devices.

In order to perform the foregoing learning component202can employ a probabilistic based or statistical based approach, for example, in connection with making determinations or inferences. Inferences can be based in part upon explicit training of classifiers or implicit training based at least upon system feedback and/or an entity's previous actions, commands, instructions, and the like during use of the system. Learning component202can employ any suitable scheme (e.g., neural networks, expert systems, Bayesian belief networks, support vector machines (SVMs), Hidden Markov Models (HMMs), fuzzy logic, data fusion, etc.) in accordance with implementing various automated aspects described herein. Learning component202can factor historical data, extrinsic data, context, data content, state of the entity, and can compute cost of making an incorrect determination or inference versus benefit of making a correct determination or inference. Accordingly, a utility-based analysis can be employed with providing such information to other components or taking automated action. Ranking and confidence measures can also be calculated and employed in connection with such analysis.

In accordance with an embodiment, learning component202can be an artificial neural network (ANN) such as a network where connections between nodes (or neurons) form a directed cycle that creates an internal state of the network that allows learning component202to exhibit a dynamic temporal behavior (e.g., the network automatically and dynamically adapts over time and during each iteration (or, in some embodiments, one or more iterations)). Learning component202, can be defined by a plurality of input nodes, a plurality of connections between the plurality input nodes to a plurality of hidden nodes, and ultimately a plurality of connections from the plurality of hidden nodes to a plurality of terminal nodes. The connections between the plurality of input nodes to the plurality of hidden nodes and from the plurality of hidden nodes to the plurality of terminal nodes can be associated with transitional probabilities that can represent relative probabilities associated with transitioning from a first node in the artificial neural network to a second node in the artificial neural network. The transitional probabilities associated with each of (or, in some embodiments, one or more of) the connections can be determined using a normalized exponential function, such as a softmax function. Thus, based on a first node in the artificial neural network being activated, a second node in the artificial neural network can be selected for activation based on transitional probabilities associated with a plurality of connections that can emanate from the activated node (e.g., the first node) to a non-empty set of possible second nodes to which the eventually selected second node is a member. The process of activating nodes based on connections to other nodes and associated transitional probabilities can be repeated until finally, terminal nodes are triggered. The triggering of the terminal nodes determines the output that is to be output.

FIG. 3illustrates another block diagram of an example, non-limiting system that facilitates estimation of node processing capacity values for order fulfillment in accordance with one or more embodiments described herein. Repetitive description of like elements employed in other embodiments described herein is omitted for sake of brevity.

System300can comprise one or more of the components and/or functionality of systems100,200and vice versa. As shown, in some embodiments, capacity engine102of system300can comprise priority component302and learning component202, along with one or more other components shown with reference toFIG. 1. Priority component302can provide a time aware prioritization that reflects a level of urgency associated with different days in the order fulfillment paradigm. As will be appreciated by those of ordinary skill in the context of order fulfillment, the closer it gets to a deadline date, the higher the urgency level value that can be assigned to a particular fulfillment task. For example, a product that needs to be shipped/delivered to an entity today will have a higher urgency value than a product that needs to be delivered/shipped to an entity a month from today. Thus, as an impending due date approaches, the urgency value associated with completion or fulfilling a task will typically rise commensurately.

In order to determine the urgency value, priority component302can employ two processes for assigning a value to a task based on a ranking of tasks by an importance value based on historical data as applied to a future capacity prediction model: utilization of a sliding window process, and/or utilizing a decay function. With reference toFIG. 7and in the context of the sliding window, priority component302can consider only days within a defined distance (as represented by the sliding window702overlaid over a timeline704) prior to the deadline date for completion or fulfillment of the task. For instance, should the date for fulfillment of an order be Saturday, Aug. 5, 2017, priority component302can utilize the sliding window702to rank the priority of tasks within the sliding window702giving the most weight to fulfillment of tasks that need to be completed, for instance, on Monday, Jul. 31, 2017 and the least weight to fulfillment of tasks the need to be completed by Saturday Aug. 5, 2017. Thus, in this instance, and based on use of sliding window702overlaid on timeline704, priority component302can assign a respective urgency value to fulfillment tasks that occur within the range of the sliding window702; assigning higher urgency values to tasks that need to be completed earlier in the timeline704and commensurately lower urgency values for tasks that need to be completed later in the timeline704. In this way, priority component302in collaboration with the sliding window process can prioritize fulfillment tasks that appear in the sliding window in contrast to tasks that do not appear in the sliding window. Fulfillment tasks that do not appear in the sliding window can be ignored, albeit temporarily, as such fulfillment tasks typically will not have a bearing on the determination of the urgency value.

Additionally and/or alternatively, priority component302can also assign a weighting value to each fulfillment task (or, in some embodiments, one or more fulfillment tasks) based on the immediacy of completing the fulfillment task by a due date. One process that priority component302can utilize to assign a weighting value to each fulfillment task (or, in some embodiments, one or more fulfillment tasks) is to use a decay function, such as an exponential decay function. Thus, priority component302can assign exponentially larger weight values to tasks that need to be completed prior to an impending and fast approaching due date and can assign exponentially smaller weight values to tasks where the due date for fulfillment is not impending. For instance, a task that needs to be fulfilled tomorrow can be assigned a exponentially greater weight value in contrast to a task that needs to be fulfilled one week from tomorrow. In this way, and through use of a decay function, priority component302can ensure that each day (or, in some embodiments, one or more days) in a timeline can have an influence on the assignment and fulfillment of tasks.

Turning now toFIG. 4, illustrated is another block diagram of an example, non-limiting system that facilitates estimation of node processing capacity values for order fulfillment. Repetitive description of like elements employed in other embodiments described herein is omitted for sake of brevity.

System400can comprise one or more of the components and/or functionality of systems100,200,300and vice versa. As shown, in some embodiments, capacity engine102of system400can comprise evolvement component402, priority component302, and learning component202, along with one or more other components shown with reference toFIG. 1.

Evolvement component402can predict the future processing capacity value for a processing node device in one or more future time periods by considering long-term/short-term patterns that can have been determined from historical data representing historical processing capacities for each processing node device (or, in some embodiments, one or more processing node devices) included in a network of processing node devices that can be modeled as a time series, for example, at an hourly, daily, weekly, monthly, . . . time granularity. The determined hourly, daily, weekly, monthly, . . . current processing capacity can then be considered as a value of a time series that shows periodical patterns at different levels, such as, seasonal patterns caused by seasonal adjustments in various factors, such as labor, machine maintenance schedules, and the like.

To predict the future processing capacity value, evolvement component402can use and compare a first time period in a first grouping of time periods with a second time period in a second grouping of time periods, wherein the first time period corresponds with the second time period. For instance, the first time period in the first grouping of time periods can relate to a season and the second time period in the second grouping of time periods can relate (e.g., correspond) to the same season but in successive preceding years. For example, the first time period in the first grouping of time periods can relate to the holiday season of the current year, whereas the second time period in the second grouping of time periods can relate to the same holiday season of the previous year. Similarly, the first time period in the first grouping of time periods and the second time period in the second grouping of time periods can relate to the same day of the week but in different weeks. Further, the first time period in the first grouping of time periods and the second time period in the second grouping of time periods can relate to the same month in different years. Evolvement component402can therefore determine patterns from the historical data and these patterns can be used to identify patterns that influence processing capacity of processing node devices. For instance, a pattern can have been noticed that every Monday a particular processing node device has a backlog of tasks to fulfill and as such evolvement component402can utilize this information to predict that the processing node will have a backlog of fulfillment tasks for the upcoming Monday and thus can take steps to assign tasks to alternate processing node devices for fulfillment.

FIG. 5illustrates another block diagram of an example, non-limiting system that facilitates estimation of node processing capacity values for order fulfillment in accordance with one or more embodiments described herein. Repetitive description of like elements employed in other embodiments described herein is omitted for the sake of brevity.

Non-limiting system500can comprise one or more of the components and/or functionality of system100,200,300,400, and vice versa. As illustrated, priority component302can comprise window component502and decay component504. As has been noted above, priority component302can provide a time aware prioritization that reflects a level of urgency associated with different days in the order fulfillment paradigm, and as such, priority component302, through facilities and functionalities provided by window component502, can employ a sliding window process (see e.g.,FIG. 7) to consider only days within a defined distance (as represented in a sliding window702overlaid over a timeline704) prior to a deadline due date for fulfillment of a task. Window component502in collaboration with the illustrative sliding window process illustrated inFIG. 7can rank the priority of tasks that fall within the scope the sliding window, assigning the most weight to the fulfillment of tasks that have impending fulfillment due dates (e.g., tasks that are due for fulfillment today) and assigning the least weight to the fulfillment of tasks that are not due for fulfillment until a subsequent date (e.g., tasks that are not due for fulfillment for several days from today). For instance with reference toFIG. 7window component502can give the most weight to fulfillment of tasks that need to be completed, for instance, on Monday, Jul. 31, 2017 and can give the least weight to fulfillment of tasks that need to be completed by Saturday, Aug. 5, 2017. Based at least on the relative weightings determined by window component502through use of the sliding window process relative urgency values can be assigned to the fulfillment of tasks that occur within the range of the sliding window702, wherein higher urgency values can be assigned to tasks that need to be completed earlier in the timeline704and relatively lower urgency values can be assigned to tasks the need to be completed later in the timeline704. For example, using a scale from 0 to 9, where 9 denotes a high weighting relative to fulfillment date and 0 low weighting relative to fulfillment date, a product that needs to be fulfilled today, Dec. 24, 2016, can be assigned a value of 9 the highest weight, whereas a product that has a fulfillment date of Jan. 25, 2017 can be assigned the lowest weight value of 0. As a further example and using the same 0 to 9 scale, a product with a fulfillment date of today, Dec. 24, 2016, can be assigned a weighting value of 9 to indicate that the product must be delivered by Christmas day Dec. 25, 2016, whereas a product that needs fulfillment by Dec. 26, 2016 can be associated with a low weighting value of 3. In this manner, use of window component502in conjunction with the sliding window process can prioritize fulfillment of tasks that appear in the sliding window in contrast to tasks that do not appear in the sliding window. Fulfillment of tasks that do not appear in the sliding window can be ignored, albeit temporarily, as such task fulfillment will not have a direct bearing on the determination of the urgency values assigned to the fulfillment of tasks that appear within the ambit of the sliding window process.

Additionally and or/alternatively, priority component302can also assign weighting values to each fulfillment task (or, in some embodiments, one or more fulfillment tasks) based at least on an immediacy of completing the fulfillment task by a due date. In order to assign weighting values to each fulfillment task (or, in some embodiments, fulfillment tasks) one or more based on an immediacy of completing fulfillment task by a due date, a decay component504can assign a weighting value to each task (or, in some embodiments, one or more tasks) based on a decay function, such as an exponential decay function, such that exponentially larger weighting values can be assigned to the fulfillment of tasks that need to be completed immediately prior to impending and fast approaching due dates, and exponentially smaller weighting values can be assigned to tasks where the due date for fulfillment is not so urgent and in the more distant future. For example, a task that needs fulfillment by tomorrow can be assigned an exponentially greater weight than a task that needs to be fulfilled one week from tomorrow. Similarly, a task that needs fulfillment one week from tomorrow can be assigned a greater weight than a task that needs to be fulfilled one month from tomorrow. In this manner, through the use of weighting values determined by decay component504and assigned to disparate tasks that need fulfillment, each day (or, in some embodiments, one or more days) in a timeline can have an influence on the assignment and fulfillment of the totality of tasks.

FIG. 6illustrates a further block diagram of an example, non-limiting system that facilitates estimation of node processing capacity values for order fulfillment in accordance with one or more embodiments described herein. Repetitive description of like elements employed in other embodiments described herein is omitted for the sake of brevity.

Non-limiting system600can comprise one or more of the components and/or functionality of system100,200,300,400,500, and vice versa. As illustrated evolvement component402can comprise heuristic component602and mining component604. Heuristic component602can be utilized to determine a future processing capacity value for a processing node device comprising a network of processing node devices in one or more future defined time periods. Heuristic component602can determine a future processing capacity value for processing node device for one or more future time periods by considering long-term/short-term patterns that can have been determined from historical data. The historical data can represent historical processing capacities for each processing node device (or, in some embodiments, one or more processing node devices) included in and comprising a network of processing node devices.

Heuristic component602can identify a specific day of the week from the historical data, for instance, Wednesday, and can utilize the specific day of the week—Wednesdays—as a reference point into the historical data and determine the historical processing capacity values for a particular processing node device as of the specific day of the week (Wednesdays) in the past, and thereafter can utilize the historical processing capacity values of the specific day of the week to predict future processing capacity values for the processing device for upcoming Wednesdays into the future.

Additionally and or/alternatively, evolvement component402can also include mining component604, wherein mining component604can determine a future processing capacity value for processing node devices comprising a network of processing node devices in one or more future defined time periods. Mining component604, based on the historical data representing historical processing capacities for each processing node device (or, in some embodiments, one or more processing node devices) included in and comprising a network of processing node devices, can model the historical processing capacities for each processing node device (or, in some embodiments, one or more processing node devices) as a time series based on a defined time granularity (e.g., hourly, daily, weekly, monthly, yearly, etc.). The time series for each processing node device (or, in some embodiments, one or more processing node devices) can, by using a wavelet analysis or Fourier analysis, show periodical patterns at different levels of granularity. For example, Fourier analysis can show periodical patterns associated with seasonal patterns caused by seasonal adjustments in various factors of production, such as labor, supply chain delays and variations, machine maintenance schedules, and the like. Fourier analysis can also show periodical patterns associated with environmental factors, such as snow days, ice storms, hurricanes, water shortages, etc. Mining component604. based on historical periodicities identified in the time series in relation to historical processing capacities of processing node devices comprising a network of processing node devices, can utilize these learned historical periodicities to predict when and if a processing node device will have a backlog of fulfillment tasks for the upcoming defined time period and thus can take steps to assign tasks to alternate processing node devices for fulfillment of an order.

Some of the foregoing processes performed may be performed by specialized computers for carrying out defined tasks related to learning daily processing capacities and determining processing capacity values for each processing node device (or, in some embodiments, one or more processing node devices) included in a network of processing node devices. The subject computer processing systems, computer-implemented methods, apparatuses and/or computer program products can be employed to solve new problems that arise through advancements in technology, computer networks, the Internet and the like. One or more embodiments of the subject computer processing systems, methods, apparatuses and/or computer program products can provide technical improvements to the automated learning of daily processing capacities and determining processing capacity values for each processing node device (or, in some embodiments, one or more processing node devices) included in a network of processing node devices by improving processing efficiency among processing components in learning of daily processing capacities and determining processing capacity values for each processing node device (or, in some embodiments, one or more processing node devices) included in a network of processing node devices, reducing delay in processing performed by the processing components, and/or improving the accuracy in which the processing systems perform learning of daily processing capacities and determining processing capacity values for each processing node device (or, in some embodiments, one or more processing node devices) included in a network of processing node devices.

FIG. 8illustrates a flow diagram of an example, non-limiting computer-implemented method800that facilitates estimation of node processing capacity values for order fulfillment in accordance with one or more embodiments described herein. Repetitive description of like elements employed in other embodiments described herein is omitted for sake of brevity.

At802, a system (e.g., system400) operatively coupled to a processor (e.g., capacity engine102of system400) can, through use of learning component202and evolvement component402, remove a periodic signal from a time series based on historical data to generate an updated time series. The periodic signal can be removed from the time series through use of Fourier analysis or a wavelet analysis.

At804, the system400, using learning component202and priority component302can apply a decay function to the updated time series to generate a predicted capacity value, and at806, system400through use of learning component202and evolvement component402can add to the predicted capacity value an average processing capacity value for a defined time period that represents a trend observed for a future time period.

FIG. 9illustrates a flow diagram of an example, non-limiting computer-implemented method900that facilitates estimation of node processing capacity values for order fulfillment in accordance with one or more embodiments described herein. Repetitive descriptions of like elements employed in other embodiments described herein is omitted for sake of brevity.

At902, a system (e.g., system400) operatively coupled to a processor (e.g., capacity engine102of system400) can, through use of learning component202and evolvement component402, remove a periodic signal from a time series based on historical data to generate an updated time series. The periodic signal can be removed from the time series through use of Fourier analysis or a wavelet analysis.

At904, the system400, using learning component202and priority component302can utilize a sliding window process to generate a predicted capacity value, and at906, system400through use of learning component202and evolvement component402can add to the predicted capacity value an average processing capacity value for a defined time period that represents a trend observed for a future time period and the predicted capacity value.

FIG. 10illustrates a flow diagram of an example, non-limiting computer-implemented method1000that facilitates estimation of node processing capacity values for order fulfillment in accordance with one or more embodiments described herein. Repetitive descriptions of like elements employed with other embodiments described herein is omitted for sake of brevity.

At1002, a system (e.g., system400) operatively coupled to a processor (e.g., capacity engine102of system400) can, through use of learning component202and evolvement component402, generate a current processing capacity value for an entity.

At1004, the system400, using learning component202and priority component302can determine a future processing capacity value for the entity based on the current processing capacity value and by using a future capacity model that has been explicitly trained to infer respective processing capacity values for the entity, and at1006, system400through use of learning component202, priority component302and evolvement component402can fulfill and order of an item for sale based on the future processing capacity value.

In order to provide a context for the various aspects of the disclosed subject matter,FIG. 11as well as the following discussion, are intended to provide a general description of a suitable environment in which the various aspects of the disclosed subject matter can be implemented.FIG. 11illustrates a block diagram of an example, non-limiting operating environment in which one or more embodiments described herein can be facilitated. Repetitive description of like elements employed in other embodiments described herein is omitted for sake of brevity.

With reference toFIG. 11, a suitable operating environment1101for implementing various aspects of this disclosure can also include a computer1112. The computer1112can also include a processing unit1114, a system memory1116, and a system bus1118. The system bus1118couples system components including, but not limited to, the system memory1116to the processing unit1114. The processing unit1114can be any of various available processors. Dual microprocessors and other multiprocessor architectures also can be employed as the processing unit1114. The system bus1118can be any of several types of bus structure(s) including the memory bus or memory controller, a peripheral bus or external bus, and/or a local bus using any variety of available bus architectures including, but not limited to, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Card Bus, Universal Serial Bus (USB), Advanced Graphics Port (AGP), Firewire (IEEE1394), and Small Computer Systems Interface (SCSI). The system memory1116can also include volatile memory1120and nonvolatile memory1122. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer1112, such as during start-up, is stored in nonvolatile memory1122. By way of illustration, and not limitation, nonvolatile memory1122can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, or nonvolatile random access memory (RAM) (e.g., ferroelectric RAM (FeRAM). Volatile memory1120can also include random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), direct Rambus RAM (DRRAM), direct Rambus dynamic RAM (DRDRAM), and Rambus dynamic RAM.

Computer1112can also include removable/non-removable, volatile/non-volatile computer storage media.FIG. 11illustrates, for example, a disk storage1124. Disk storage1124can also include, but is not limited to, devices like a magnetic disk drive, floppy disk drive, tape drive, Jaz drive, Zip drive, LS-100 drive, flash memory card, or memory stick. The disk storage1124also can include storage media separately or in combination with other storage media including, but not limited to, an optical disk drive such as a compact disk ROM device (CD-ROM), CD recordable drive (CD-R Drive), CD rewritable drive (CD-RW Drive) or a digital versatile disk ROM drive (DVD-ROM). To facilitate connection of the disk storage1124to the system bus1118, a removable or non-removable interface is typically used, such as interface1126.FIG. 11also depicts software that acts as an intermediary between users and the basic computer resources described in the suitable operating environment1101. Such software can also include, for example, an operating system1128. Operating system1128, which can be stored on disk storage1124, acts to control and allocate resources of the computer1112. System applications1130take advantage of the management of resources by operating system1128through program modules1132and program data1134, e.g., stored either in system memory1116or on disk storage1124. It is to be appreciated that this disclosure can be implemented with various operating systems or combinations of operating systems. A user enters commands or information into the computer1112through input device(s)1136. Input devices1136include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit1114through the system bus1118via interface port(s)1138. Interface port(s)1138include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s)1140use some of the same type of ports as input device(s)1136. Thus, for example, a USB port can be used to provide input to computer1112, and to output information from computer1112to an output device1140. Output adapter1142is provided to illustrate that there are some output devices1140like monitors, speakers, and printers, among other output devices1140, which require special adapters. The output adapters1142include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device1140and the system bus1118. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s)1144.

Computer1112can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s)1144. The remote computer(s)1144can be a computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically can also include many or all of the elements described relative to computer1112. For purposes of brevity, only a memory storage device1146is illustrated with remote computer(s)1144. Remote computer(s)1144is logically connected to computer1112through a network interface1148and then physically connected via communication connection1150. Network interface1148encompasses wire and/or wireless communication networks such as local-area networks (LAN), wide-area networks (WAN), cellular networks, etc. LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet, Token Ring and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL). Communication connection(s)1150refers to the hardware/software employed to connect the network interface1148to the system bus1118. While communication connection1150is shown for illustrative clarity inside computer1112, it can also be external to computer1112. The hardware/software for connection to the network interface1148can also include, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.

Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a provider of the service. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models. The characteristics are as follows: on-demand self-service: a cloud consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with the service's provider. Broad network access: capabilities are available over a network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs). Resource pooling: the provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to demand There is a sense of location independence in that the consumer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a high level of abstraction (e.g., country, state, or data center). Rapid elasticity: capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time. Measured service: cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.

Referring now toFIG. 13, a set of functional abstraction layers provided by cloud computing environment50(FIG. 12) is shown. It should be understood in advance that the components, layers, and functions shown inFIG. 13are intended to be illustrative only and embodiments of the invention are not limited thereto. As depicted, the following layers and corresponding functions are provided: Hardware and software layer60includes hardware and software components. Examples of hardware components include: mainframes61; RISC (Reduced Instruction Set Computer) architecture based servers62; servers63; blade servers64; storage devices65; and networks and networking components66. In some embodiments, software components include network application server software67and database software68.