The present disclosure relates to supply chain management.
Traditionally, the tactical planning of a supply chain has been divided into two parts. These two parts are “planning” and “promising”. Planning is a periodic activity, which results in the creation of a plan that is feasible with respect to constraints known at planning time. Promising is a continuous activity which is triggered by the arrival or cancellation of requests for inventory.
A plan for an item at a facility comprises expected inflows and outflows. An inflow specifies inventory in terms of (1) the quantity, and (2) the time of arrival. An outflow specifies inventory in terms of (1) the quantity, and (2) the time of departure. Upon creation of a plan, the net availability of inventory (also called “Available to Promise”, or ATP) at particular points in time serves as the basis for ‘promising’. Promising is the commitment of available inventory to new orders. ATP comprises a set of time-quantity pairs in chronological order.
Prior art promising procedures proceed as follows. First, an order is received for a certain quantity of inventory to be provided at a certain time (e.g. an order for a particular quantity of a particular item at a particular storage facility). The inventory allocation process starts at the time when the order is due to be provided. The allocation process proceeds backward in time, picking up some or all of the inventory available to meet the order and committing it to that order, until (1) either the requested quantity of inventory has been found and committed to meet the order, or (2) all available inventory prior to the due date of the order has been committed. If (2), the order cannot be fulfilled on time. Yet it still may be possible to fulfill the order in full at a date later than the due date. The allocation process thus proceeds forward in time, starting at the order due date, and commits some or all of the available inventory, until (1) either the requested quantity has been found and committed, or (2) all available inventory has been committed. If the latter, the order cannot be fulfilled completely.
Another event to consider in managing inventory is order cancellations. Cancellations may occur in different forms. A customer may cancel an order that had been promised for a specific quantity at a specific time. Alternatively, a quote on a potential order may expire, and this will be treated as if an order were canceled. Upon occurrence of a cancellation the available inventory needs to be restored. In this way future promises may be made against the released inventory.
Traditionally, there have been different approaches to handling order cancellation. According to conventional thinking, the computational effort required to restore available inventory “optimally” is too expensive to be implemented in a real-time engine. Therefore, traditional inventory restoration algorithms have been heuristic and hence sub-optimal. The most commonly used approach to inventory restoration is to maintain a pegging relationship that effectively reserves specific supplies to specific demands.
Thus, an approach is needed to inventory management and order cancellation that results in more optimal allocations.
In the drawings, the same reference numbers and acronyms identify elements or acts with the same or similar functionality for ease of understanding and convenience. To easily identify the discussion of any particular element or act, the most significant digit or digits in a reference number refer to the figure number in which that element is first introduced.
References to “one embodiment” or “an embodiment” do not necessarily refer to the same embodiment, although they may.
Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” Words using the singular or plural number also include the plural or singular number respectively. Additionally, the words “herein,” “above,” “below” and words of similar import, when used in this application, refer to this application as a whole and not to any particular portions of this application. When the claims use the word “or” in reference to a list of two or more items, that word covers all of the following interpretations of the word: any of the items in the list, all of the items in the list and any combination of the items in the list.
“Logic” refers to signals and/or information that may be applied to influence the operation of a device. Software, hardware, and firmware are examples of logic. Hardware logic may be embodied in circuits. In general, logic may comprise combinations of software, hardware, and/or firmware.
Those skilled in the art will appreciate that logic may be distributed throughout one or more devices, and/or may be comprised of combinations of instructions in memory, processing capability, circuits, and so on. Therefore, in the interest of clarity and correctness logic may not always be distinctly illustrated in drawings of devices and systems, although it is inherently present therein.
In order to provide an improved allocation of inventory during orders and cancellations, a computer system may implement logic to carry out an inventory planning cycle. Inputs to this planning logic may include expected inventory supply dates and inventory amounts expected to arrive on those dates. The plan may be stored efficiently in a computer memory and may include, for example, data pairs of the form (supply, time) where supply represents the amount of inventory expected to arrive and time is the date and/or time the inventory is expected to arrive.
After the plan is established and as orders arrive and inventory is committed to meet those orders, certain values may be maintained to facilitate efficient planning. These values may include, for each data pair described above, (1) incremental ATP, (2) incremental NATP, and (3) ATPRG.
Incremental ATP represents the change in the amount of inventory that is available to promise at a particular time. Incremental NATP (Not ATP) is then defined to be the inventory supply expected to arrive at a particular time, minus the incremental ATP, i.e. the inventory that has already been committed to requests received earlier. An ATP Restoration Guide (ATPRG) value for a particular time is then defined (see below), and upon cancellation of an order the ATPRG values are applied to restore the correct amount of committed inventory to available status at each data pair in the plan. The values of ATP, NATP and ATPRG at various points in the plan may be updated upon cancelation of an order.
In order to facilitate description of the inventory allocation logic, we introduce certain notations. These notations may represent values in the memory of a computing system implementing the planning logic, although not all implementations may include each and every one. The concept of time is represented as a value t, where the precision of t is left open to the implementation, e.g. a date, or a date/time value.
supply [0]=initial inventory supply at the start of the planning cycle (t=0)
supply [t]=inventory supply expected to arrive at time t
committed_to_orders [t]=inventory committed to orders at time t
By convention, if inventory is committed at the same time inventory is expected to arrive, the inventory is treated as committed immediately after arrival of the expected inventory. In other words, for a given time t, the inventory at that time available to be committed will always include any inventory that is expected to arrive at that time.
c_supply [t]=Cumulative inventory supply up to and including time=t
c_committed_to_orders [t]=Cumulative committed inventory up to and including time=t
c_uncommitted_to orders [t]=Cumulative uncommitted inventory up to and including time=t
The cumulative uncommitted supply up to a time t is the difference between the cumulative supply up that time and the cumulative committed supply up to that time.
c_uncommitted_to orders[t]=c_supply[t]−c_committed_to_orders[t]
When an allocation plan is first created, the plan is assumed to be feasible. Thus, the cumulative uncommitted inventory is guaranteed to be non-negative for all values of t. The cumulative amount of inventory that is available to commit to orders (i.e. the cumulative ATP) at any time t is set to be the minimum uncommitted inventory at that time t and beyond.
c_atp[t]=min(c_uncommitted_to_orders[τ]: t≦τ)
By the nature of the definition, we are guaranteed that c_atp[t]≦c_uncommitted_to_orders[t] for all t.
The c_atp values are a series of upward steps at the times at which supply[t] has non-zero values. Incremental ATP is defined as the increase in c_atp at time=t, e.g. c_atp[t]=c—atp[t−1]. By the nature of the definition, we are guaranteed that atp[t]≦supply[t] for all t.
We define complementary functions cumulative NATP (cumulative Not Available to Promise) and incremental NATP as follows:
c_natp [t]=c_supply [t]−c_atp [t]
natp[t]=supply [t]−atp[t]
Finally, we define the ATP restoration guide function (ATPRG) as follows: ATPRG[t]=c_natp[t]−c_committed_to_orders[t]. By the nature of the definition, it is guaranteed that ATPRG[t]≦0 for all t.
The logic to allocate inventory upon occurrence of an order may be stated as follows.
Define ordered set supply_events as supply_events={i: supply (i)>0}
Define ordered set order_events as order_events={i: order (i)>0}
Define ordered set events as events=supply_events UNION order_events
k is the time of a new order
Define pair-set X where each element of X is a {inventory_quantity, time} pair. Initially, X is empty.
Committing Inventory to an Order
The process embodiment below is also illustrated in
1 (
j←max{i:i≦k} i ε supply_events
2 (
WHILE j≠# NULL AND order [k]>0
3 (
IF atp[j]>0 THEN
4 (
or the inventory available to promise at that time
committed [j]←min (order [k],atp [j])
INSERT INTO X {committed [j], j}
5 (
committed at this time slot
order [k]←order [k]−committed [j]
6 (
amount of inventory committed at this time slot
natp[j]←natp[j]+committed [j]
7 (
of inventory committed at this time slot
atp[j]←atp[j]−committed [j]
8 (
to the time slot of the current order event. PRED means predecessor in the set.
FOR n←j TO PRED(events, k) ATPRG[n]←ATPRG[n]+committed [j]
9 (
to the order is complete
IF order [k]=0 RETURN X
10 (
supply events
ELSE j←PRED (supply_events, j)
If the order is not fully satisfied after the processing above, it means that the order could not be filled from available inventory at and prior to the order date. Thus, the process continues to commit available inventory to the order beginning with the date after the order date.
The process embodiment below is also illustrated in
11 (
j←min{i:i>k} i ε supply_events
12 (
WHILE j≠NULL AND order [k]>0
13 (
IF atp[j]>0 THEN
14 (
of the inventory available to promise at that time
committed [j]←min (order [k], atp [j])
INSERT INTO X {committed [j], j}
15 (
committed at this time slot
order [k]←order [k]−committed [j]
16 (
amount of inventory committed at this time slot
natp[j]←natp[j]+committed [j]
17 (
of inventory committed at this time slot
atp[j]←atp[j]−committed [j]
Note that there is no ATPRG update here
18 (
inventory to the order is complete
IF order [k]=0 RETURN X
19 (
supply events. SUCC means successor in the set.
ELSE j←SUCC (supply_events, j)
If we reach this point and there remains inventory to commit to the order, it means the order cannot be fulfilled from available supply.
Releasing Inventory for a Cancelled Order
Unlike prior approaches, orders are not pegged to specific supply events. Instead, the ATP restoration guide is traversed to release committed inventory in a more optimal fashion. Updates at the supply events are relatively straightforward. The process not only results in superior inventory allocations after cancellations, but is also suitable for real-time or near-real-time execution by an appropriately configured computer system.
The process embodiment below is also illustrated in
k is the time of an order cancellation
The set X that was constructed during order promising is also used in order cancellation. For example, if an order for 10 units is due at t=7, and of that order 6 units were promised on time (on or before t=7) and the rest was promised at t=9, then X would be {(6,7), (4,9)}. In some embodiments, if this order is cancelled, the commitment at t=6 may be cancelled, then the commitment at t=9 may be cancelled.
1 (
current_supply_event←FIRST (supply_events)
2 (
WHILE min {ATPRG[i]: i ε events AND i≧current_supply_event AND i<k}=0
current_supply_event←SUCC (supply_events, current_supply_event)
3 (
WHILE order_commitment [k]>0
4 (
value between that supply event (inclusive) and the order
restore_amount←min {ATPRG[i]: i ε events AND i≧current_supply_event AND i<k}
5 (
atp[current_supply_event]←atp[current_supply_event]+restore_amount
6 (
natp[current_supply_event]←natp[current_supply_event]−restore_amount
7 (
order_commitment [k]←order_commitment[k]−restore_amount
8 (
FOREACH i in events where i≧current_supply_event AND i<k
ATPRG[i]←ATPRG[i]−restore_amount
Note that the procedures described herein, and the manners of representing an inventory plan for order commitment and release, and the manners of representing those procedures in a data processing device, are merely some of the possible manners of such organization and procedures. For example, those skilled in the art will recognize that other manners of organizing the inventory plan in a multi-level memory are feasible. Furthermore, other manners of operating on the inventory plan memory organization to achieve order commitment and release are also feasible.
Those having skill in the art will appreciate that there are various vehicles by which processes and/or systems described herein can be effected (e.g., hardware, software, and/or firmware), and that the preferred vehicle will vary with the context in which the processes are deployed. For example, if an implementer determines that speed and accuracy are paramount, the implementer may opt for a hardware and/or firmware vehicle; alternatively, if flexibility is paramount, the implementer may opt for a solely software implementation; or, yet again alternatively, the implementer may opt for some combination of hardware, software, and/or firmware. Hence, there are several possible vehicles by which the processes described herein may be effected, none of which is inherently superior to the other in that any vehicle to be utilized is a choice dependent upon the context in which the vehicle will be deployed and the specific concerns (e.g., speed, flexibility, or predictability) of the implementer, any of which may vary. Those skilled in the art will recognize that optimal aspects of implementations may involve optimally-oriented hardware, software, and or firmware.
The foregoing detailed description has set forth various embodiments of the devices and/or processes via the use of block diagrams, flowcharts, and/or examples. Insofar as such block diagrams, flowcharts, and/or examples contain one or more functions and/or operations, it will be understood as notorious by those within the art that each function and/or operation within such block diagrams, flowcharts, or examples can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or virtually any combination thereof Several portions of the subject matter described herein may be implemented via Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs), digital signal processors (DSPs), or other integrated formats. However, those skilled in the art will recognize that some aspects of the embodiments disclosed herein, in whole or in part, can be equivalently implemented in standard integrated circuits, as one or more computer programs running on one or more computers (e.g., as one or more programs running on one or more computer systems), as one or more programs running on one or more processors (e.g., as one or more programs running on one or more microprocessors), as firmware, or as virtually any combination thereof, and that designing the circuitry and/or writing the code for the software and/or firmware would be well within the skill of one of skill in the art in light of this disclosure. In addition, those skilled in the art will appreciate that the mechanisms of the subject matter described herein are capable of being distributed as a program product in a variety of forms, and that an illustrative embodiment of the subject matter described herein applies equally regardless of the particular type of signal bearing media used to actually carry out the distribution. Examples of a signal bearing media include, but are not limited to, the following: recordable type media such as floppy disks, hard disk drives, CD ROMs, digital tape, and computer memory; and transmission type media such as digital and analog communication links using TDM or IP based communication links (e.g., packet links).
In a general sense, those skilled in the art will recognize that the various aspects described herein which can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or any combination thereof can be viewed as being composed of various types of “electrical circuitry.” Consequently, as used herein “electrical circuitry” includes, but is not limited to, electrical circuitry having at least one discrete electrical circuit, electrical circuitry having at least one integrated circuit, electrical circuitry having at least one application specific integrated circuit, electrical circuitry forming a general purpose computing device configured by a computer program (e.g., a general purpose computer configured by a computer program which at least partially carries out processes and/or devices described herein, or a microprocessor configured by a computer program which at least partially carries out processes and/or devices described herein), electrical circuitry forming a memory device (e.g., forms of random access memory), and/or electrical circuitry forming a communications device (e.g., a modem, communications switch, or optical-electrical equipment).
Those skilled in the art will recognize that it is common within the art to describe devices and/or processes in the fashion set forth herein, and thereafter use standard engineering practices to integrate such described devices and/or processes into larger systems. That is, at least a portion of the devices and/or processes described herein can be integrated into a network processing system via a reasonable amount of experimentation.
The foregoing described aspects depict different components contained within, or connected with, different other components. It is to be understood that such depicted architectures are merely exemplary, and that in fact many other architectures can be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively “associated” such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermedial components. Likewise, any two components so associated can also be viewed as being “operably connected”, or “operably coupled”, to each other to achieve the desired functionality.