U.S. patent application number 15/640267 was filed with the patent office on 2018-09-13 for item delivery fulfillment plan determination.
This patent application is currently assigned to Microsoft Technology Licensing, LLC. The applicant listed for this patent is Microsoft Technology Licensing, LLC. Invention is credited to Michael V. EHRENBERG, Rekha NANDA, Yanfang SHEN.
Application Number | 20180260878 15/640267 |
Document ID | / |
Family ID | 63445390 |
Filed Date | 2018-09-13 |
United States Patent
Application |
20180260878 |
Kind Code |
A1 |
NANDA; Rekha ; et
al. |
September 13, 2018 |
ITEM DELIVERY FULFILLMENT PLAN DETERMINATION
Abstract
According to examples, an apparatus may include a processor that
is to generate a plurality of candidate fulfillment plans regarding
delivery of items over a network, in which each of the candidate
fulfillment plans is generated using a respective decision variable
of an array of values. The processor may also calculate an
evaluation value for each of the candidate fulfillment plans, in
which the evaluation value for a candidate fulfillment plan is a
measure of a compliance of the candidate fulfillment plan with a
plurality of factors pertaining to the delivery of the items. The
processor may further output instructions regarding delivery of the
items over the network according to the candidate fulfillment plan
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.
Inventors: |
NANDA; Rekha; (Redmond,
WA) ; EHRENBERG; Michael V.; (Seattle, WA) ;
SHEN; Yanfang; (Bellevue, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Microsoft Technology Licensing, LLC |
Redmond |
WA |
US |
|
|
Assignee: |
Microsoft Technology Licensing,
LLC
Redmond
WA
|
Family ID: |
63445390 |
Appl. No.: |
15/640267 |
Filed: |
June 30, 2017 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
62469501 |
Mar 9, 2017 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 9/5038 20130101;
G06F 11/3476 20130101; G06F 9/4806 20130101; G06Q 30/0635 20130101;
G06F 11/3409 20130101; G06Q 10/083 20130101; G06F 9/5027
20130101 |
International
Class: |
G06Q 30/06 20060101
G06Q030/06; G06Q 10/08 20060101 G06Q010/08 |
Claims
1. An apparatus comprising: a processor; and a memory on which is
stored machine readable instructions that are to cause the
processor to: generate a plurality of candidate fulfillment plans
regarding delivery of items over a network, wherein each of the
plurality of candidate fulfillment plans is generated using a
respective decision variable, each decision variable being an array
of values; calculate, through application of an evaluation
function, an evaluation value for each of the candidate fulfillment
plans, the evaluation value for a candidate fulfillment plan being
a measure of a compliance of the candidate fulfillment plan with a
plurality of factors pertaining to the delivery of the items; and
output instructions regarding delivery of the items over the
network 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.
2. The apparatus according to claim 1, wherein the instructions are
further to cause the processor to: generate the decision variables
as random decision variables that each includes a first subset of
random values, a second subset of random values, and a third subset
of random values, wherein each of the first subset of random
values, the second subset of random values, and the third subset of
random values has a uniform distribution from the lower limit value
to the upper limit value.
3. The apparatus according to claim 2, wherein the network
comprises providers from which the items are configured to be
provided and intermediaries through which the items are configured
to traverse, and wherein the instructions are further to cause the
processor to: for each of the plurality of candidate fulfillment
plans, determine a sequence for a plurality of orders for the items
to be processed using the first subset of random values; determine
which of the providers are to provide the items for each of the
plurality of orders using the second subset of random values; and
determine which of the intermediaries through which the items are
to traverse using the third subset of random values.
4. The apparatus according to claim 3, wherein the plurality of
orders comprises a first order and a second order, wherein to
determine the sequence for the plurality of orders for the items to
be processed, the instructions are further to cause the processor
to: assign a first random value of the first subset of random
values to the first order; assign a second random value of the
first subset of random values to the second order; determine the
sequence for the first order and the second order to be processed
based upon the values of the first random value and the second
random value; and wherein the instructions are further to cause the
processor to process each of the first order and the second order
in the determined sequence.
5. The apparatus according to claim 4, wherein to process each of
the first order and the second order, the instructions are further
to cause the processor to, for each of the orders and in the
determined sequence: access a list of valid providers for the items
included in the order, wherein a valid provider is a provider that
is configured to satisfy delivery constraints and rules associated
with delivery of the items; assign the valid providers to provide
the items one-by-one according to a sequence determined by the
random values in the second subset of random values until the order
is fulfilled or all of the valid providers are processed without
the order being fulfilled; and store the order as being fulfilled
or as being unfilled.
6. The apparatus according to claim 5, wherein to determine which
of the intermediaries through which the items are to traverse, the
instructions are further to cause the processor to, for a currently
processed order in the determined sequence: access a list of valid
intermediaries through which the items in the order is permitted to
traverse; generate a sequence of the valid intermediaries from the
list of valid intermediaries based upon the random decision values
in the third subset of random values; for each of the assigned
valid providers, determine, one-by-one according to the generated
sequence of valid intermediaries, whether the valid intermediary is
able to satisfy a certain restriction until a first intermediary
that is able to satisfy the certain restriction is determined or in
response to all of the valid intermediaries being processed without
a valid intermediary that is able to satisfy the certain
restriction being determined; and store the valid intermediary for
the assigned valid provider or an indication that a valid
intermediary for the assigned valid provider has not been
determined.
7. The apparatus according to claim 6, wherein the instructions are
further to cause the processor to: for any of the candidate
fulfillment plans that includes an order that is not fulfilled or
includes an assigned valid provider for which a valid intermediary
has not been determined, implement a feasibility improvement
process for the order.
8. The apparatus according to claim 1, wherein the evaluation
function includes 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, and a
total number of orders that violate an item constraint.
9. A method comprising: generating, by a processor, random decision
variables, wherein each of the random decision variables is an
array of random values that range from a lower limit value to an
upper limit value; generating, by the processor, a respective
candidate fulfillment plan regarding fulfillment of orders for
delivery of items over an infrastructure through use of a
respective random decision variable; applying, by the processor, an
objective function to calculate a respective score for each of the
generated candidate fulfillment plans, the score for a candidate
fulfillment plan being a measure of a compliance of the candidate
fulfillment plan with a plurality of factors pertaining to
fulfilling the orders; and instructing, by the processor, a
provider to deliver the items over the infrastructure according to
the candidate fulfillment plan having the score that corresponds to
a maximized compliance with the plurality of factors among the
calculated scores to maximize compliance with the plurality of
factors in the fulfillment of the orders.
10. The method according to claim 9, wherein generating the random
decision variables further comprises generating the random decision
variables to each include a first subset of random values, a second
subset of random values, and a third subset of random values.
11. The method according to claim 10, wherein the infrastructure
comprises providers from which the items are configured to be
provided and intermediaries through which the items are configured
to traverse, the method further comprising: for each of the
plurality of candidate fulfillment plans, determining a sequence
for the orders for delivery of the items to be processed using the
first subset of random values; determining which of the providers
are to provide the items for each of the orders using the second
subset of random values; and determining which of the
intermediaries through which the items are to traverse using the
third subset of random values.
12. The method according to claim 11, wherein the orders comprise a
first order and a second order, and wherein the method further
comprises: assigning a first random value of the first subset of
random values to the first order and a second random value of the
first subset of random values to the second order; determining the
sequence for the first order and the second order to be processed
based upon the first random value and the second random values; and
processing each of the first order and the second order in the
determined sequence.
13. The method according to claim 12, wherein processing each of
the first order and the second order in the determined order
further comprises: for each of the first order and the second order
and in the determined sequence, accessing a list of valid providers
for the items included in the order, wherein a valid provider is a
provider that is configured to satisfy delivery constraints and
rules associated with delivery of the items; assigning the valid
providers to provide the items one-by-one according to a sequence
determined by the random values in the second subset of random
values until the order is fulfilled or all of the valid providers
are processed without the order being fulfilled; and storing the
order as being fulfilled or as being unfilled.
14. The method according to claim 13, wherein determining which of
the intermediaries through which the items are to traverse further
comprises: for each of the first order and the second order and in
the determined sequence, accessing a list of valid intermediaries
through which the items in the order is permitted to traverse;
generating a sequence of the valid intermediaries from the list of
valid intermediaries based upon values of the random values in the
third subset of random values; for each of the assigned valid
providers, determining, one-by-one according to the generated
sequence of valid intermediaries, whether the valid intermediary is
able to satisfy a certain restriction until a first intermediary
that is able to satisfy the certain restriction is determined or in
response to all of the valid intermediaries being processed without
a valid intermediary that is able to satisfy the certain
restriction being determined; and storing the valid intermediary
for the assigned valid provider or an indication that a valid
intermediary for the assigned valid provider has not been
determined.
15. The method according to claim 9, wherein applying the objective
function to calculate a respective score for each of the generated
candidate fulfillment plans further comprises applying the
objective function to include a weighted total number of orders
that have an infeasible fulfillment plan, a weighted total number
of orders that are not fulfilled, a weighted total number of orders
that violate a delivery constraint, and a weighted total number of
orders that violate an item constraint.
16. The method according to claim 9, wherein generating and
applying further comprises: initiating a candidate group of R
random decision variables; setting a first counter; setting a
second counter; for a random decision variable corresponding to the
second counter in the candidate group, generating a candidate
fulfillment plan; calculating an evaluation value of the generated
candidate fulfillment plan; recording a currently best candidate
fulfillment plan and associated evaluation; and incrementing the
second counter; and repeating the generating, the calculating, and
the recording for a random decision variable corresponding to the
incremented second counter until the second counter exceeds R.
17. The method according to claim 16, further comprising: in
response to a determination that the second counter exceeds R,
incrementing the first counter; determining whether the first
counter exceeds a certain maximum number of iterations; in response
to a determination that the first counter exceeds the certain
number of iterations, constructing a population by selecting R
random decision variable with a probability from a current
candidate group of R random decision variables; and generating a
new candidate group of R random decision variables given the
constructed population; repeating the setting of the second
counter, the generating, the calculating, the recording for the
random decision variables in the new candidate group of R random
decisions and the incrementing of the second counter.
18. A non-transitory computer readable medium on which is stored
machine readable instructions that when executed by a processor are
to cause the processor to: generate a first random decision
variable and a second random decision variable, wherein each of the
first and second random decision variables is an array of random
values that range from a lower limit value to an upper limit value;
generate, using the first random decision variable, a first
candidate fulfillment plan regarding fulfillment of orders for
delivery of items over an infrastructure; generate, using the
second random decision variable, a second candidate fulfillment
plan regarding fulfillment of orders for delivery of items over an
infrastructure; calculate a respective evaluation value for each of
the generated first and second candidate fulfillment plans, wherein
the evaluation value for a candidate fulfillment plan is a measure
of a compliance of the candidate fulfillment plan with a plurality
of factors pertaining to fulfilling the orders; and output
instructions to deliver the items over the infrastructure according
to the first or second 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
fulfillment of the orders.
19. The non-transitory computer readable medium according to claim
18, wherein the infrastructure comprises providers from which the
items are configured to be provided and intermediaries through
which the items are configured to traverse, and wherein the
instructions are further to cause the processor to: generate each
of the first and second random decision variables to include a
first subset of random values, a second subset of random values,
and a third subset of random values; and for each of the first and
second candidate fulfillment plans, determine a sequence for the
orders for delivery of the items to be processed using the first
subset of random values; determine which of the providers are to
provide the items for each of the orders using the second subset of
random values; and determine which of the intermediaries are to
handle the items using the third subset of random values.
20. The non-transitory computer readable medium according to claim
18, wherein to calculate the respective evaluation value for each
of the generated first and second candidate fulfillment plans, the
instructions are further to cause the processor to: apply an
objective function to the candidate fulfillment plan, wherein the
objective function includes, for the candidate fulfillment plan, a
weighted total number of orders that have an infeasible fulfillment
plan, a weighted total number of orders that are not fulfilled, a
weighted total number of orders that violate a delivery constraint,
and a weighted total number of orders that violate an item
constraint.
Description
CLAIM FOR PRIORITY
[0001] 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.
BACKGROUND
[0002] 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.
BRIEF DESCRIPTION OF THE DRAWINGS
[0003] 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:
[0004] FIG. 1 shows a block diagram of an example network in which
features of the present disclosure may be implemented in accordance
with an embodiment of the present disclosure;
[0005] FIG. 2 shows a block diagram of an apparatus in accordance
with an embodiment of the present disclosure;
[0006] FIG. 3 depicts a flow diagram of a method for identifying a
fulfillment plan that corresponds to a maximized compliance with a
plurality of factors pertaining to the delivery of items over a
network in accordance with an embodiment of the present
disclosure;
[0007] FIGS. 4A and 4B, collectively, depict a flow diagram of a
method for identifying a fulfillment plan that corresponds to a
maximized compliance with a plurality of factors pertaining to the
delivery of items over a network in accordance with another
embodiment of the present disclosure; and
[0008] FIG. 5 depicts a flow diagram of a method for generating a
candidate fulfillment plan in accordance an embodiment of the
present disclosure.
DETAILED DESCRIPTION
[0009] 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.
[0010] 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.
[0011] 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.
[0012] 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.
[0013] 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.
[0014] 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.
[0015] 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.
[0016] With reference first to FIG. 1, there is shown a block
diagram of an example network 100 in which features of the present
disclosure may be implemented in accordance with an embodiment of
the present disclosure. It should be understood that the network
100 depicted in FIG. 1 may include additional components and that
some of the components described herein may be removed and/or
modified without departing from a scope of the network 100.
[0017] 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.
[0018] 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.
[0019] 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.
[0020] As shown in FIG. 1, items may traverse any of a number of
different paths from the providers 102, through the intermediaries
110, and to the destinations 120 via the connections 104, 106. The
different paths may be associated with different delivery costs
and/or delivery timeframes with respect to each other. For
instance, delivering an item through a first path may result in the
incursion of a first monetary cost and a first delivery timeframe,
while delivering the item through a second path may result in the
incursion of the same monetary cost but may incur a second delivery
timeframe. Additionally, restrictions on which of the paths the
item may traverse may exist based upon set policies and rules and
thus, the item may not be delivered through those paths upon which
the restrictions apply. As discussed herein, candidate fulfillment
plans of the possible paths that the item may traverse may be
evaluated and the candidate fulfillment plan having the maximum
compliance with a set of factors may be selected for delivery of
the item. For instance, the candidate fulfillment plan resulting in
the incursion of the lowest amount of monetary cost and the
shortest delivery timeframe may be selected for delivery of the
item.
[0021] 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.
[0022] 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.
[0023] Turning now to FIG. 2, there is shown a block diagram of an
apparatus 200 in accordance with an embodiment of the present
disclosure. The apparatus 200 may be equivalent to the apparatus
130 shown and discussed above with respect to FIG. 1. Additionally,
the apparatus 200 may be a computing device, a server computer,
etc. It should be understood that the apparatus 200 depicted in
FIG. 2 may include additional components and that some of the
components described herein may be removed and/or modified without
departing from a scope of the apparatus 200.
[0024] 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.
[0025] 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.
[0026] 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.
[0027] 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.
[0028] 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.
[0029] As also shown in FIG. 2, the memory 210 may have stored
thereon random decision variables 230. The random decision
variables 230 may be the processor 202 generated random decision
variables or random decision variables that may have been generated
by another device and supplied to the apparatus 200. In any regard,
and as discussed in greater detail herein, the processor 202 may
use the random decision variables 230 to generate a plurality of
candidate fulfillment plans 232, which may also be stored on the
memory 210.
[0030] 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.
[0031] 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: [0032] a list of items associated to the orders; [0033]
available inventory of the items (e.g., stored data packets) listed
in the orders; [0034] a delivery address of the items; and [0035]
rules associated with a destination (e.g., all of the items sent to
the same address should be sent as one package, etc.).
[0036] 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.
[0037] 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.
[0038] 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: [0039] Delivery cost and
delivery time; [0040] Rules associated with the corresponding
transit. For example, an extreme weather rule may be active in
which the transit between a provider and an intermediary may
temporarily not be allowed (in this case, the delivery costs of all
delivery types may be set to infinity in the transit parameters
table) or the transit from a provider to an intermediary may always
be restricted. As another example, a service disruption rule may be
active in which the transmission of data packets is temporarily not
possible (in this case, the delivery costs of all delivery types
may be set to infinity in the transit parameters table).
[0041] 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: [0042] Group the orders by order creation time, as well as
the maximum number of order lines allowed in a group. An order line
may refer to an individual item included in an order of any
quantity and an order may contain multiple order lines. [0043]
Group the orders by shipping method, e.g., packets contained in the
same package, overnight shipping, two day shipping, ground
shipping, etc.
[0044] 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: [0045] A user may indicate that
all of the items be received within a particular number of days.
This rule may specify a delivery constraint of the rule-based model
discussed herein, e.g., the delivery time from providers 102 to
destinations 120 to be less than or equal to the particular number
of days. [0046] A user may indicate that the ordered items be
delivered in at most a particular number of separate packages, in
which the transition cost of the rule-based model is cost per
package. This rule may specify a number of intermediaries 110
constraint of the rule-based model discussed herein, e.g., the
number of the intermediaries 110 chosen from the potential
intermediaries 110 should be no more than the particular number of
separate packages. [0047] A user may indicate that the ordered
items be shipped as a single package, in which the transition cost
of the rule-based model is cost per package. This rule may specify
the number of intermediaries 110 constraint of the rule-based
model, e.g., the number of the intermediaries 110 chosen among the
potential intermediaries to deliver the items should be exactly
one. [0048] A user may indicate that the items of all orders be
delivered as soon as possible. This rule may specify an objective
function of the rule-based model, e.g., the goal of the rule-based
model may be to minimize the delivery time of fulfilling the order.
[0049] A user may choose a local store to pick up the items that
were ordered online. This rule may specify the location of the
user, which may not be the address of the user, but the address of
the chosen local store. [0050] A provider 102 may set rules to
reject orders that have certain features or to reject certain types
of orders. [0051] An intermediary 110 may set rules to reject
orders that have certain features or to reject certain types of
orders.
[0052] 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: [0053] Nearest
warehouse policy. In this rule, all of the items an order should be
sent from providers to an intermediary that is nearest to the
destination of the items and the intermediary should send the items
together to destination. This rule may specify the potential
intermediaries appearing in the network, e.g., according to the
rule, the rule-based model should automatically find the
intermediary nearest to the destination, and set that intermediary
to be the only potential intermediary in the network for the order.
[0054] Available local stores within a certain distance policy. In
this rule, if the destination is located in an area in which
multiple stores may be chosen as potential providers, then the
providers that have the items available and are within a certain
distance, e.g., 10 miles, from the destination should be set as
potential providers. In response to the total available items being
found within the certain distance can only partially fulfill the
order, then increase the searching distance by an additional
distance, e.g., another 10 miles, each time until enough available
items are found. [0055] Ineligible potential intermediaries policy.
In this rule, if the ordered items belong to a certain type, then
only certain ones of the intermediaries may be selected as
potential intermediaries of the items. Likewise, if the ordered
items belong to another certain type, then certain ones of the
intermediaries cannot be selected as potential intermediaries of
the items. This rule may restrict the choice of potential
intermediaries in the network. [0056] All items should be shipped
directly from chosen providers to destinations. This rule may
eliminate the potential intermediaries in the network. According to
examples, instead of eliminating the potential intermediaries from
the network 100, the destination may be set as the only potential
intermediary and the transition cost and the transition time from
the potential intermediary to the destination may be set to be
zero. [0057] At most a certain number of potential providers may be
chosen as the final providers to fulfill the order. This rule may
specify a number of provider constraint of the rule-based model,
e.g., the number of the providers selected among the potential
providers to fulfill an order should be no more than the certain
number. [0058] An on-line retailer may prefer to minimize the
number of providers selected among the potential providers to
fulfill the order. This rule may specify the objective function of
the rule-based model, e.g., the goal of the rule-based model may be
to minimize the number of providers to fulfill the customer
order.
[0059] 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.
[0060] 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.
[0061] 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: [0062] Minimize the total
shipping cost of the items in the orders. Under this rule, the
delivery cost of each transit connection may be set as the shipping
cost. [0063] Minimize the sum of delivery time of the entire
network. Under this rule, the delivery cost of each transit
connection may be set as the shipping time. [0064] Minimize the
total number of packages delivered in the entire network. Under
this rule, the delivery cost of each transit connection may be set
as one. [0065] Minimize the total number of packages received by
all addresses associated with orders. Under this rule, the delivery
cost of any valid transit connection between a potential provider
and a potential intermediary may be set as zero and the delivery
cost of any valid transit connection between a potential
intermediary and a destination associated with an order may be set
as one.
[0066] 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.
[0067] 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.
[0068] 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.
[0069] 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.
[0070] 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 FIGS. 3-5. Particularly, FIG. 3 depicts a flow diagram
of a method 300 for identifying a fulfillment plan that corresponds
to a maximized compliance with a plurality of factors 244
pertaining to the delivery of items over a network in accordance
with an embodiment of the present disclosure. FIGS. 4A and 4B,
collectively, depict a flow diagram of a method 400 for identifying
a fulfillment plan that corresponds to a maximized compliance with
a plurality of factors 244 pertaining to the delivery of items over
a network in accordance with another embodiment of the present
disclosure. In other words, FIGS. 3 and 4A-4B, respectively, depict
flow diagrams of methods 300 and 400 for identifying a fulfillment
plan that corresponds to a maximized compliance with a plurality of
factors 244 pertaining to fulfillment of multiple orders for the
delivery of items. In addition, FIG. 5 depicts a flow diagram of a
method 500 for generating a candidate fulfillment plan in
accordance with an embodiment of the present disclosure. It should
be understood that the methods 300, 400, and 500 depicted in FIGS.
3-5 may include additional operations and that some of the
operations described therein may be removed and/or modified without
departing from the scopes of the methods 300, 400, and 500. The
descriptions of the methods 300, 400, and 500 are made with
reference to the features depicted in FIGS. 1 and 2 for purposes of
illustration.
[0071] With reference first to FIG. 3, at block 302, the processor
202 may execute the instructions 222 to generate a plurality of
candidate fulfillment plans, in which each of the plurality of
candidate fulfillment plans is generated using a respective
decision variable 230. Thus, the processor 202 may use a plurality
of decision variables to generate the candidate fulfillment plans.
In addition, each of the plurality of decision variables may
include different sets of values with respect to each other. In
this regard, application of the respective decision variables may
result in the candidate fulfillment plans having different
combinations of providers 102 and intermediaries 110 with respect
to each other.
[0072] 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 (X.sub.r), and may be an array of random numbers or
values as indicated in the following equation (1):
X r = { x r 1 , x r 2 , , x r ( N s ) , x r ( N s + 1 ) , x r ( N s
+ 2 ) , , x r ( N s + N s ) , x r ( 2 N s + 1 ) , x r ( 2 N s + 2 )
, , x r ( 2 N s + K ) } ##EQU00001##
In equation (1) above, x.sub.ri is a random value generated by an
iteration of a chosen heuristic optimization algorithm,
0<x.sub.ri.ltoreq.1 for all i, N.sub.s 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 (X.sub.r), 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.
[0073] In addition, X.sub.r in equation (1) above may be construed
as including three subsets. A first subset of the decision variable
X.sub.r may include the values in the array
{x.sub.(2N.sub.s.sub.+1), x.sub.r(2N.sub.s.sub.+2), . . . ,
x.sub.r(2N.sub.+K)}, a second subset of the decision variable
X.sub.r may include the values in the array {x.sub.r1, x.sub.r2, .
. . , x.sub.rN.sub.s}, and a third subset of the decision variable
X.sub.r may include the values in the array
{x.sub.r(N.sub.s.sub.+1), x.sub.r(N.sub.s.sub.+2), . . . ,
x.sub.r(N.sub.s.sub.+N.sub.s.sub.)}. As discussed in detail herein,
for a particular candidate fulfillment plan, the processor 202 may
use the values in the first subset of the decision variable X.sub.r
to determine sequence in which orders are processed, the values in
the second subset of the decision variable X.sub.r to determine
which of the providers 102 is to provide the items in the orders,
and the values in the third subset of the decision variable X.sub.r
to determine which of the intermediaries 110 are to handle the
items in the orders.
[0074] 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 X.sub.r through application of the following
equation (2):
f(X.sub.r)=w.sub.1.alpha..sub.1(X.sub.r)+w.sub.2.alpha..sub.2(X.sub.r)+w-
.sub.3.alpha..sub.3(X.sub.r)+w.sub.4.alpha..sub.4(X.sub.r)/n.sub.orders+C(-
X.sub.r)
[0075] In Equation (2),
.alpha. 1 ( X r ) = total number of orders that have infeasible
fulfillment plan ##EQU00002## .alpha. 2 ( X r ) = total number of
orders that not fully fulfilled ##EQU00002.2## .alpha. 3 ( X r ) =
orders violate delivery constrain ( delivery time - max allowed
delivery time ) ##EQU00002.3## .alpha. 4 ( X r ) = orders violate
package constrain ( number of delivery package - max allowed
delivery package ) ##EQU00002.4## w 1 , w 2 , w 3 , w 4 :
infeasible penalties with values > 0 ##EQU00002.5## n orders :
total number of orders ##EQU00002.6## C ( X r ) : total cost ( any
goal ) . ##EQU00002.7##
[0076] 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.
[0077] 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.
[0078] 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.
[0079] With reference now to FIGS. 4A and 4B, at block 402, the
processor 202 may execute the instructions 214 to initiate a
candidate group of R random decision variables, in which the
processor 202 may generate the R random decision variables. The
variable "R" may represent a value greater than one. The processor
202 may implement any suitable random value generation scheme to
generate each of the random decision variables to include different
sets of random values with respect to each other and to have some
distribution such as a uniform distribution. In addition, each of
the random decision variables may be an artificially defined array
of values between 0 and 1. Particularly, for instance, each random
decision variable may be represented as (X.sub.r) in equation (1)
as discussed above with respect to FIG. 3. Each of the random
decision variables (X.sub.r) may include subsets of random values,
which may be used to determine the candidate fulfillment plans. In
addition, the processor 202 may store the generated random decision
variables 230 in the memory 210.
[0080] 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".
[0081] 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.
[0082] With reference now to method 500 in FIG. 5, which shows an
example manner in which the processor 202 may generate the
candidate fulfillment plan. At block 502, the processor 202 may
generate a sequence of the orders to be processed. Particularly,
for instance, the processor 202 may identify from the order data
234 orders that have not yet been fulfilled and may determine the
sequence in which the processor 202 is to process the unfilled
orders. For instance, the processor 202 may process the unfilled
orders one-by-one according to a sequence determined by the subset
of the random decision variable selected at block 406, e.g., the
subset of X.sub.r, {x.sub.(2N.sub.s.sub.+1),
x.sub.r(2N.sub.s.sub.+2), . . . , x.sub.r(2N.sub.s.sub.+K)}, in
which K is the total number of unfilled orders. That is, each of
the unfilled orders may be assigned to one of the random values in
the subset of X.sub.r. Thus, a first unfilled order may be assigned
the random value x.sub.r(2N.sub.s.sub.+1), a second unfilled order
may be assigned the random value x.sub.r(2N.sub.x.sub.+2), a third
unfilled order may be assigned the random value
x.sub.r(2N.sub.s.sub.+3).
[0083] 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
{x.sub.r(2N.sub.s.sub.+1), x.sub.r(2N.sub.s.sub.+2),
x.sub.r(2N.sub.s.sub.+3)}={0.9, 0.4, 0.1}. In this example, the
first order to be processed may be determined by the value of
x.sub.r(2N.sub.s.sub.+1). Considering there are three orders to be
processed, if the value of x.sub.r(2N.sub.s.sub.+1)falls in the
range (0, 1/3], then Order A will be processed first; if the value
of x.sub.r(2N.sub.s.sub.+1) falls in the range (1/3, 2/3], then
Order B will be processed first; and if value of
x.sub.r(2N.sub.s.sub.+1) falls in the range (2/3, 1], then Order C
will be processed first. In this example, the value of
x.sub.r(2N.sub.s.sub.+1)=0.9, which falls in the range (2/3, 1],
and therefore Order C is determined to be processed first.
[0084] Continuing with the example, the second order to be
processed in the sequence may be determined by the value of
x.sub.r(2N.sub.s.sub.+2). Considering there are two orders
remaining to be processed (i.e., Order A and Order B), if the value
of x.sub.r(2N.sub.s.sub.+2) falls in the range (0, 1/2], then Order
A will be processed before Order B and if the value of
x.sub.r(2N.sub.s.sub.+2) falls in the range (1/2, 1], then Order B
will be processed before Order A. In this example, the value of
x.sub.r(2N.sub.s.sub.+2)=0.4, which falls in the range (0, 1/2],
and therefore Order A is determined to be processed before Order B.
As such, the processing sequence of the orders in this example is
Order C, Order A, and Order B.
[0085] 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 n.sub.p=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.
[0086] 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 X.sub.r, {x.sub.r1, x.sub.r2, . . .
, x.sub.rN.sub.s}, until the order is fully fulfilled or all the
valid providers 102 have been processed. The processor 202 may
assign the valid providers 102 in the following manner. [0087]
Increase i.sub.p=i.sub.p+1; if i.sub.p>N.sub.s, set i.sub.p=1;
[0088] Identify a valid provider from the list according to the
value of the random value x.sub.ri.sub.p, e.g., if
[0088] j - 1 n p < x ri p .ltoreq. j n p , ##EQU00003##
then the j.sup.th valid provider 102 in the list is identified.
[0089] Assign the j.sup.th valid provider to fulfill the order as
much as possible; record the assignment and fulfillment, and update
the inventory of the j.sup.th valid provider; [0090] Decrease
n.sub.p=n.sub.p-1; [0091] If the order is fully fulfilled, stop the
process of assigning valid providers, and mark the order as fully
fulfilled; otherwise, if n.sub.p=0, stop the process of assigning
valid source nodes, and mark the order as partially fulfilled; if
none of the above, go back to the first step.
[0092] 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.
[0093] 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 n.sub.h represents the total
number of intermediaries 110 in the list, the processor 202 may
assign the valid intermediaries in the following manner. [0094]
set
[0094] m=min(number of providers assigned to the order, customer
specified max number of packages allowed to ship for fulfilling the
order) [0095] generate a sequence of intermediaries 110 with m
elements from the list of valid intermediaries as follows: [0096]
set k=0; [0097] increase i.sub.h=i.sub.h+1; if i.sub.h>N.sub.s,
set i.sub.h=1; [0098] identify an intermediary from the list of
valid intermediaries according to the value of the random number
x.sub.r(N.sub.s.sub.+i.sub.h.sub.), e.g., if
[0098] j - 1 n h < x r ( N s + i h ) .ltoreq. j n h ,
##EQU00004##
then the j.sup.th intermediary in the valid intermediary list is
picked up; [0099] increase k=k+1; if k=m, stop; otherwise, go back
to the first step. [0100] for each provider assigned to fulfill the
currently processed order, assign an intermediary from the sequence
of intermediaries generated above as follows: [0101] check the
sequence of intermediaries generated above one-by-one until the
first feasible intermediary is found such that: the connection from
the processed provider to the intermediary is not restricted; the
delivery time from the processed provider to the processed order
via the chosen intermediary is feasible; and if a feasible
intermediary is not found, set the processed provider itself as its
intermediary. [0102] stop if all providers assigned to fulfill the
currently processed order are processed.
[0103] 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.
[0104] 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.
[0105] 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.
[0106] If the order is not fully fulfilled, try to fulfill the
order by ignoring the delivery time as follows. [0107] (a)
Construct a list of providers for the order such that the delivery
time from a valid provider to the order violates delivery
constraints but still satisfies shipping restriction rules. If the
list is empty, stop, otherwise, go to the next step. [0108] (b)
Check the list of providers generated by step (a) one-by-one, if
there is any available inventory that may be assigned to fulfill
the processed order, assign the provider, and record the assignment
and fulfillment, and update the inventory of the assigned provider.
In addition, set the assigned provider itself as its intermediary.
Stop the process if the order is fully fulfilled or if all of the
providers in the list have been processed. [0109] (c) Update the
delivery time and total number of packages of the processed
order.
[0110] 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: [0111] (a) Collect all providers assigned to the processed
order as a list; [0112] (b) For each provider identified in the
list, find all feasible intermediaries such that: the connection
from the processed provider to the intermediary is not restricted
and the delivery time from the processed provider to the processed
order via the chosen intermediary is feasible; [0113] (c) Find the
intermediary that is feasible for most providers contained in the
list, if multiple intermediaries exist, choose the first one; then
set the chosen intermediary as the connected intermediary to the
providers for which the intermediary is feasible; and remove the
providers that have been assigned a feasible intermediary from the
list of providers; [0114] (d) If the list of providers is empty, or
if there is no feasible intermediary for all of the providers
contained in the list, stop; otherwise, go to step (c).
[0115] 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.
[0116] With reference back to FIG. 4A, following generation of the
candidate fulfillment plan using the selected random decision
variable at block 408, the processor 202 may execute the
instructions 224 to calculate an evaluation value for the generated
candidate fulfillment plan. The evaluation value may be defined as
a measure of a compliance of the candidate fulfillment plan with a
plurality of factors pertaining to the delivery of items. In this
regard, the evaluation value may be determined through application
of an evaluation function (which is also referenced herein as an
optimization function) that includes the plurality of factors. An
example of the evaluation function is described above with respect
to equation (2).
[0117] 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.
[0118] 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.
[0119] 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.
[0120] 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.
[0121] 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.
[0122] 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.
[0123] 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.
[0124] 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.
[0125] 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.
[0126] 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.
* * * * *