There are many business models from which a vendor may choose to sell products to customers. One of these business models offer subscription services to subscribers (i.e., customer), where such service could offer a limited number of products to their subscribers on a periodic basis, e.g., a monthly basis. A vendor could enter into an arrangement in which each subscriber user receives a monthly shipment of a limited number of products from the products that the vendor has available to sell.
For instance, assume that each customer of a vendor provides each customer with five products from fifty stocked or accessible products on a monthly subscription basis. The vendor could choose the five products to provide to the customer each customer, some of them based upon a known customers' characteristics, preferences, and purchasing history. Of the five, the vendor may select two of them, and the remaining forty-eight could be divided equally into three “choice groups” such that each choice group has eighteen products. The customer may then choose one of the eighteen in each choice group.
Ideally, the vendor would simply send each customer his or her favorite products; unfortunately, there may be many reasons why the vendor cannot. For instance, the quantities of each product that are stocked by the vendor may differ due to a limited number of products that are available to the vendor for purchase. Also, there may be certain products that cannot be provided to certain customers. For example, a customer could be allergic to a product(s), and/or one or more states of the United States may ban or place a restriction on a product(s) if it contains particular chemicals or ingredients. If faced with such situation, the vendor will want to avoid assigning such product(s) to the customer should.
In some business models, the vendor may have a warehouse in which products are assembled into combos and sent to its customers. If the vendor has a customer base of millions of subscribers, the vendor faces a large possible combinations—or “combos”—to fulfill each month.
To allocate enough time for employees to assemble combos for a customer base of millions of customers, the vendor may have to limit the number of combos that will be assembled (e.g., two-hundred fifty combos). By limiting the number of combos, an assembly line could be employed to assemble tens of thousands (or more) of each combo in batches. The total number of combos assembled will depend on the number of customers that will receive them. Hence, the vendor needs to carefully assign the products of each combo to the customers in a manner that maximizes overall customer-combo scores.
“Traditional” techniques—forms of assignment problems—may be employed to assign subscribers to products when all of the subscribers and products are known ahead of time. For example, a “minimum cost, maximum flow” (min-cost max-flow) technique may be employed to minimize costs to deliver a maximum flow of products to the subscribers; however, this technique does not allow the vendor to assign subscribers one at a time, i.e., sequentially, in an optimal way that is reasonably fast.
A degenerate solution would be to apply a full min-cost max-flow technique after each time a subscriber is added; however, the solution may be too slow to meet the demands of the vendor. More importantly, the amount of processing time would be significantly increased.
Embodiments of the inventive concepts disclosed herein are directed to an assignment system which injects computer processing efficiency by providing an iterative solution to the assignment problem arising from an addition of new and unknown subscribers. The iterative solution—distinct from solutions that solve static forms of assignment problems—provides for optimal results and allows for an opaque stream of new and unknown subscribers to be added to the process one at a time while maintaining optimality along the way and reducing the amount of processing time required by existing assignment techniques.
In one aspect, embodiments of the inventive concepts disclosed herein are directed to a method for allocating distributed resources or assigning a new member to a full receiver in a dynamic assignment system or distributed resource allocation system. The method could include receiving a new member of the system, assigning the new member to a receiver, reassigning an existing member in the assigned receiver to a destination receiver, and determining a best path and a best path cost for the assigned receiver.
In a further aspect, embodiments of the inventive concepts disclosed herein are directed to a method for determining a best path between two receivers in a dynamic assignment system or distributed resource allocation system. The method could include assigning a new member to one receiver, creating a listing of best cost deltas and corresponding members for each destination receiver, and determining a best path and a best path cost of the assigned receiver.
In a further aspect, embodiments of the inventive concepts disclosed herein are directed to a method for monitoring a receiver reassignment of a member in a dynamic assignment system of distributed resource allocation system. The method could include reassigning a member from one full receiver to a destination receiver of a plurality of destination receivers, amending at least one listing of the assigned receiver, amending each listing of the destination receiver upon meeting a boundary cost criteria, determining a first best path to an open receiver and a first best path, and determining a second best path to an open receiver and a second best path cost.
In a further aspect, embodiments of the inventive concepts disclosed herein are directed to a device employed in a dynamic assignment system. The method could include receiving a sequence of new members, creating a plurality of nodes and a plurality of edges of a directed graph, and determining a minimum cost for each full receiver.
For a fuller understanding of the inventive embodiments, reference is made to the following description taken in connection with the accompanying drawings in which:
In the following description, several specific details are presented to provide a thorough understanding of embodiments of the inventive concepts disclosed herein. One skilled in the relevant art will recognize, however, that the inventive concepts disclosed herein can be practiced without one or more of the specific details or in combination with other components. In other instances, well-known implementations or operations are not shown or described in detail to avoid obscuring aspects of various embodiments of the inventive concepts disclosed herein.
Referring to
Dynamic distributional system 100 includes an assignment processing unit (APU) 110 with a new member module 120, a listing management module 130, and a best path and best path cost (BPBPC) module 140.
APU 110 could include any electronic data processing unit which executes software or computer instruction code that could be stored, permanently or temporarily, in a digital memory storage device or a non-transitory computer-readable media (generally, memory) including, but not limited to, cloud storage, random access memory (RAM), read-only memory (ROM), compact disc (CD), hard disk drive, diskette, solid-state memory, secure digital cards, and/or compact flash cards. The PU 150 may be driven by the execution of software or computer instruction code containing algorithms developed for the specific functions embodied herein. For the embodiments herein, the term “processor” is not limited to one processing unit and its meaning is not intended to be construed narrowly. For instance, APU 110 could also include more than one electronic data processing unit. In some embodiments, APU 110 could be a processor(s) used by or in conjunction with any other system(s) which may benefit from the performance of the functions embodied herein.
In some embodiments, the terms “programmed” and “configured” are synonymous. APU 110 may be electronically coupled to systems and/or sources to facilitate the receipt of input data. In some embodiments, operatively coupled may be considered as interchangeable with electronically coupled. It is not necessary that a direct connection be made; instead, such receipt of input data and the providing of output data could be provided through a bus, through a wireless data/communications network, or as a signal received and/or transmitted by APU 110 via a physical or a virtual computer port. APU 110 may be programmed or configured to execute the method discussed in detail below. In some embodiments, APU 110 may be programmed or configured to receive data from other system(s) which may benefit from the performance of the functions embodied herein. In some embodiments, APU 110 may be programmed or configured to provide output data to various systems and/or units which may benefit from the performance of the functions embodied herein.
New member module 120 could be configured to receive a sequential stream of new members—one member at a time—into the dynamic distributional system 100 having a plurality of members and a plurality of receivers, where each receiver is configured to receive a number of members equal to its capacity. It should be noted that the term “member” includes any person, place, or thing that could be assigned, and the term “receiver” could be any person, place, or thing to which the member is assigned.
With each new member, new member module 120 could receive a plurality of best path costs from BPBPC 140 and a plurality of member-receiver scores of the new ball to determine a receiver to which the new member will be assigned as disclosed below. Each best path cost could correspond to one receiver, and each member-receiver score could correspond to one receiver. For each receiver, the member-receiver score corresponding to the receiver may be added to the receiver's best path cost, and the receiver yielding the greatest sum of the score and the cost may be the receiver to which the new ball is assigned.
Listing management module 130 could be configured to receive new ball assignment information from new member module 120, and create and maintain best cost deltas listings for each receiver as disclosed below. Each listing includes a best cost and boundary cost determined by listing management module 130 from differences of member-receiver scores, i.e., cost deltas, between receivers. Listing management module 130 may also assist reassignments of a member(s) through a process of amending one or more listings in response to receiving assignment information of the new ball, where each reassignment may be determined by one or more best costs appearing on one or more listing(s) as maintained by listing management module 130.
BPBPC 140 may be configured to receive reassignment information from listing management module 130, and determine best path and best path cost of one or more members in response as disclosed below. The determination of best cost may be provided to, i.e., made available to, new member module 110 for an assignment of the next new ball.
To illustrate the assignment technique disclosed herein and performed by APU 110, an exemplary scenario is provided in which customers (e.g., users) may be assigned to combination of products in a dynamic situation in which the customers are not known prior to joining dynamic distributional system 100.
Referring to
Each ball is received sequentially one at a time, and neither the identity of the ball nor the ball's ball-cup scores are known until after it has been received. Referring to
Referring now to
As shown in
Once all of the deltas for cup C have been determined, not all of them are necessary as disclosed herein. In some embodiments, a user may limit the number of deltas that are tracked to the N highest deltas, where N is less than the capacity of cup C.
In situations which involve millions of customers or subscribers (each represented by a ball) and hundreds or thousands of products (each represented by a cup) from which combinations of products may be tailored for each individual subscriber, a limitation placed upon the number of tracked deltas may result in a significant reduction in the amount of processing or computation time due of a reduction of the number of computations being performed.
For the purpose of illustration and not of limitation, the number of deltas will be limited to the three deltas having the greatest values for each corresponding cup, i.e., the top three deltas. Referring to
As shown in
As shown in
Once the best costs have been determined, a best move path to achieve the lowest cost of the system may be determined. Because each cup other than cup C is open, the best move for cup C is to the open cup D as it will suffer the least cost of −1. The least cost of −1 to cup C is shown in the graphical representation as the shaded square next to node C; the unshaded squares with zeros next to nodes A, B, and D indicate that best path costs have not been computed for cups A, B, and D, respectively. Because cups A, B, and D are open cups that have not reached capacity, new balls may be added directly to them without the need to move a ball that is already in the cup.
Referring now to
As shown in
As shown in
As shown in
Because there is more than one full cup, there is more than one path to an open cup, where each path could have different costs. For instance, there are two paths between full cup C and open cup A: a direct path CA or indirect path CBA; for the purpose of brevity and since paths connect cups, paths will be identified from the nodes being connected. The cost for traveling along paths CA and CBA are −5 and −5 (−4+(−1)), respectively. Reviewing the best costs of
As shown in
Similarly, there are two paths between full cup B and open cup A: path BA at a cost of −1, and path BCA at a cost of −7. Ball r would transfer to cup A along path BA; for path BCA, ball w would transfer to cup C, and ball q to cup D.
Likewise, there are two paths between full cup B and open cup D: path BD at a cost of −1, and path BCD at a cost of −3. Ball t would transfer to cup D along path BD; for path BCD, ball w would transfer to cup C, and ball q to cup D.
By comparing the cup C costs of −5 (CA), −5 (CBA), −1 (CD), and −5 (CBD), the best path to an open cup for full cup C is CD because it suffers the least cost; hence, the best path cost for cup C is −1. Likewise, for the cup B costs of −1 (BA), −7 (BCA), −1 (BD), and −3 (BCD), the best path to an open cup may be either BA or BD because each suffers the least cost; that is, the best path cost for cup B of −1. The best path costs are represented in the shaded squares next to their respective nodes and shaded cells in the table.
Referring now to
As shown in
As shown in
Because ball q has been reassigned, the best costs shown in
As shown in
As shown in
As shown in
Referring now to
As shown in
As shown in
Because ball i has been reassigned, the best costs shown in
As shown in
Also, ball i has been removed from the listing for destination cup D. Because ball i no longer appears in cup C, it has been removed from the listing for cup B; the listing for cup A is not affected because ball i did not appear on it. The best costs shown in the listings of
As shown in
Referring now to
As shown in
As shown in
Because ball k has been reassigned, the best costs shown in
As shown in
Also, ball k has been removed from the listing for its destination cup D. Because ball k no longer appears in cup C, it has been removed from the listing for cup A; the listing for cup B is not affected because ball k did not appear on it.
As observed, the listing for destination cup D of cup C no longer has deltas. As such, a new listing needs to be generated for destination cup D using the cup C current ball-cup scores shown in
Because cup D has transitioned into being a full cup, best costs for cups A, B, and C need to be established using the cup D current ball-cup scores shown in
As shown in
It should be noted that the determination of the best path cost could result in one or more zeros or positive numbers. In such instances, the best path cost for the cup would be the maximum value(s) resulting from the determination.
As observed from the preceding discussion, there are fifteen possible paths to one open cup in a four cup system in which there is one open cup and three full cups. Also, besides one direct path to the open cup from each of the other full cups, there are four indirect paths for which each requires a summation of more than one cost. Although these determinations may be manageable and not unbearable when performed manually in a system of a relatively few numbers of cups, a system which employs tens, hundreds, or more cups within a system is simply not manageable and unbearable.
In some embodiments, the best path is determined as a function of the Floyd-Warshall all-pairs shortest distance algorithm employing three nested loops adapted for use with best-path score deltas instead of distances, where an outer loop of the algorithm is comprised of nodes with both outgoing and incoming edges, a middle loop of the algorithm is comprised of nodes with outgoing edges, and an inner loop is comprised of nodes with incoming edges
As discussed above, a directed graph has been employed in the determination for the best path cost for each full cup. Although typically employed to find shortest paths, shortest distance algorithms may be employed to determine best path costs. For example, the Floyd-Warshall all-pairs minimum distance algorithm may be modified to form a Floyd-Warshall minimum path cost. Instead of the algorithm's use of positive and negative edge lengths (or weights) between vertices, the costs of outgoing and incoming edges, respectively, between nodes may be used. Instead of finding shortest paths in a single execution using path length as weights in the directed graph (i.e., a direct weighted graph), minimum path costs may be found in a single execution using path costs as weights.
For example, the Floyd-Warshall algorithm employs three nested loops adapted for use with best costs. The outer loop of the algorithm may be comprised of nodes with both outgoing and incoming edges, a middle loop of the algorithm may be comprised of nodes with outgoing edges, and an inner loop may be comprised of nodes with incoming edges. As applied to the directed graph of
A middle loop may be comprised of nodes B, C, and D with outgoing edges. Node B may be a node with outgoing edges with costs of −1, −2, and −1 to nodes A, C, and D, respectively. Node C may be a node with outgoing edges with costs of −4, −5, and −2 to nodes A, B, and D, respectively. Node D may be a node with outgoing edges with costs of −2, −2 and 3, to nodes A, B, and D, respectively.
Alternatively, an outer loop may be comprised of nodes B, C, and D with both outgoing and incoming edges. Node B may be a node with not only outgoing edges with costs of −1, −2, and −1 to nodes A, C, and D, respectively, but also with incoming edges with costs of −5 and 2- from Nodes C and D, respectively. Node C may be a node with not only outgoing edges with costs of −4, −5, and −2 to nodes A, B, and D, respectively, but also with incoming edges with costs of −2 and 3 from Nodes B and D, respectively. Node D may be a node with not only outgoing edges with costs of −2, −2, and 3 to nodes A, B, and C, respectively, but also with incoming edges with costs of −1 and −2 from Nodes B and C, respectively.
The method of flowchart 200 begins with module 202 with the system receiving one new member having at least one member-receiver score, where each member-receiver score is a score corresponding to one receiver. In some embodiments, each new member may have a preferred receiver and one or more alternative receivers, where the preferred receiver corresponds to the one member-receiver score that is higher or greater than the other member-receiver score(s). In some embodiments, the new member is assigned to its preferred receiver if it is an open receiver.
The method of flowchart 200 continues with module 204 with the system assigning the new member to a receiver as a function of the new member's member-receiver score corresponding to the receiver and its best path cost. In some embodiments, the receiver yielding the largest computed sum of a receiver's member-receiver score and its best path cost will be the assigned receiver. In some embodiments, the best path cost for an open receiver is zero.
The method of flowchart 200 continues with module 206 with the system reassigning an existing member in the assigned receiver to a destination receiver if the assigned receiver is determined to be a full receiver, where the destination receiver may be determined as a function of at least the first best path of the assigned receiver.
The method of flowchart 200 continues with module 208 with the system determining a second best path and a second best path cost of the assigned receiver in response to the assignment and reassignment. Once determined, the system is now ready to return to module 202 and use the second best path cost to assign the next new member as a function in a continuous loop of modules 202-208 for a series of new members. Then, the method of flowchart 200 ends.
The method of flowchart 300 begins with module 302 with the system assigning a new member to one receiver that, as a result of the assignment, transitions from being an open receiver to being a full receiver.
The method of flowchart 300 continues with module 304 with the system creating a listing of best cost deltas and corresponding members for each destination receiver, where such listing may be created as a function of the plurality of member-receiver scores of the new member. In some embodiments, each destination receiver may be either an open or full destination receiver. Each cost delta may be the difference between the member-receiver score of the new member corresponding to the assigned receiver and a member-receiver score corresponding to one destination receiver. In some embodiments, each listing includes fewer members than the assigned receiver's member capacity. In some embodiments, each listing may include a best cost for each destination receiver. In some embodiments, each listing may include a boundary cost.
The method of flowchart 300 continues with module 306 with the system determining a best path and a best path cost of the assigned receiver as a function of the best cost of each listing of the assigned receiver and a best cost of one or more listings of each full destination receiver that were determined prior to the assignment of the new member. Once determined, the system is now ready to use the best path cost determined for the assigned receiver in the assignment of the next new member. Also, the best path to an open cup may be comprised of the best path. Then, the method of flowchart 300 ends.
The method of flowchart 400 begins with module 402 with the system reassigning a member from a full receiver to a destination receiver of one or more destination receivers in response to an assignment of a new member to the full receiver, i.e., assigned receiver. In some embodiments, the assignment may have been determined as a function of a previously determined best path cost of the assigned receiver, and the reassignment may be determined as a function of a previously determined best path of the assigned receiver. In some embodiments, a best path may have been determined from listings of the assigned receiver that includes best cost deltas and corresponding member and a plurality of listings of best cost deltas for the destination receiver(s).
The method of flowchart 400 continues with module 404 with the system amending one or more listings of the assigned receiver. In some embodiments, one or more listings may be amended by removing its best cost. In some embodiments, one or more listings may be amended by removing the reassigned member and corresponding best cost delta from each listing on which the reassigned member is listed. In some embodiments, one or more replacement listings may be created when its boundary cost(s) corresponding to a best cost delta is removed.
The method of flowchart 400 continues with module 406 with the system amending one or more listings of the destination receiver. In some embodiments, one or more listings may be amended when a best cost delta of the reassigned member corresponding to the destination receiver is greater than or equal to a boundary cost of the listing.
The method of flowchart 400 continues with module 408 with the system determining, for the assigned receiver, a best path to an open receiver and a best path.
The method of flowchart 400 continues with module 408 with the system determining, for the assigned receiver, a second best path to an open receiver and a second best path.
The method of flowchart 400 continues with module 406 with the system amending one or more listings of the destination receiver, if any, in which a best cost delta of the reassigned member corresponding to the destination receiver is greater than or equal to a boundary cost of the listing.
The method of flowchart 400 continues with module 408 with the system determining, for the assigned receiver, a best path to an open receiver and a best path cost.
The method of flowchart 400 continues with module 410 with the system determining, for the destination receiver, a best path to an open receiver and a best path cost. Once determined, the system is now ready to use the best path costs of both the assigned receiver and destination receiver in the assignment of the next new member. Then, the method of flowchart 400 ends.
The method of flowchart 500 begins with module 502 with the APU 110 receiving data representative of a sequence of new members to the assignment system. In some embodiments, each new member may have a preferred receiver and one or more alternative receivers, where the preferred receiver corresponds to the one member-receiver score that is higher or greater than the other member-receiver score(s). In some embodiments, the new member is assigned to its preferred receiver if it is an open receiver.
The method of flowchart 500 continues with module 504 with the APU 110 creating a plurality of nodes and a plurality of edges of a directed graph, where each node may represent a receiver, each edge may represent a cost between two receivers, each receiver may be an open receiver or a full receiver, each open receiver may be comprised of a plurality of incoming edges, and/or each full receiver is comprised of at least a plurality of outgoing edges. In some embodiments, each incoming edge may be one outgoing edge directed from one full receiver, and/or each outgoing edge of each full receiver may be directed to one open receiver or one full receiver.
The method of flowchart 500 continues with module 506 determining a minimum cost for each full receiver as a function of the cost of each outgoing edge comprising the full receiver. In some embodiments, the function could be the Floyd-Warshall algorithm adapted for minimum costs. Then, the method of flowchart 500 ends.
It should be noted that the steps of the method described above may be embodied in computer-readable media stored in a non-transitory computer-readable medium as computer instruction code. The method may include one or more of the steps described herein, which one or more steps may be carried out in any desired order including being carried out simultaneously with one another. For example, two or more of the steps disclosed herein may be combined in a single step and/or one or more of the steps may be carried out as two or more sub-steps. Further, steps not expressly disclosed or inherently present herein may be interspersed with or added to the steps described herein, or may be substituted for one or more of the steps described herein as will be appreciated by a person of ordinary skill in the art having the benefit of the instant disclosure.
As used herein, the term “embodiment” means an embodiment that serves to illustrate by way of example but not limitation.
It will be appreciated to those skilled in the art that the preceding examples and embodiments are exemplary and not limiting to the broad scope of the inventive concepts disclosed herein. It is intended that all modifications, permutations, enhancements, equivalents, and improvements thereto that are apparent to those skilled in the art upon a reading of the specification and a study of the drawings are included within the broad scope of the inventive concepts disclosed herein. It is therefore intended that the following appended claims include all such modifications, permutations, enhancements, equivalents, and improvements falling within the broad scope of the inventive concepts disclosed herein.