Claims
- 1. A computer-implemented method for determining winning bid(s) in a combinatorial auction or exchange comprising:
(a) receiving bids, wherein each bid includes one or more items and a bid price associated with said one or more items; (b) choosing one of the received bids; (c) selecting bids from the received bids as a function of the chosen bid, wherein the selected bids include the chosen bid; (d) forming from the selected bids at least part of a search tree that defines for each selected bid at least one node on one level of the search tree that is connected to at least one other node on another level of the search tree by at least one of an inclusion branch and an exclusion branch; (e) searching a plurality of unique paths of the search tree to determine for each path a candidate allocation of the selected bids, wherein each candidate allocation includes a combination of the selected bids that lie along the corresponding search path and a price that is the sum of the bid prices of the combination of the selected bids; and (f) when a price of a candidate allocation is better than a current price of a best allocation, updating the best allocation and its price with the candidate allocation and its price.
- 2. The method of claim 1, further including initializing the price of the best allocation to $0 for a forward auction and to a very large value for a reverse auction.
- 3. The method of claim 1, wherein step (e) includes determining a candidate allocation that includes at least one of:
bids that are connected only via inclusion branches of the search tree; bids that are connected only via exclusion branches of the search tree; one bid on one level of the search tree connected to one bid on higher level of the search tree via an exclusion branch and each bid on a level above said higher level of the search tree connected thereto via an inclusion branch; and one bid on one of the lower levels of the search tree connected to one bid on a higher level of the search tree via an inclusion branch and each bid on a level above said higher level of the search tree connected thereto via an exclusion branch.
- 4. The method of claim 1, wherein each search path is comprised of a unique combination of inclusion and exclusion branches of the search tree.
- 5. The method of claim 1, wherein step (e) includes performing a depth-first branch-and-bound search on the bids of the search tree.
- 6. The method of claim 1, further including:
(g) separating the received bids into two or more subsets of bids; and (h) performing steps (b)-(f) on each subset of bids.
- 7. The method of claim 6, wherein:
between steps (g) and (h) the subsets of bids are sorted in descending order based on the number of bids in each subset; and step (h) is performed on each subset of bids in descending order.
- 8. The method of claim 1, wherein step (e) includes:
determining an upper bound price of a group of bids of a subtree of the search tree; determining a difference between (1) a sum of the price(s) of the bid(s) that lie on a search path connected to said subtree and (2) the current price of the best allocation; if the upper bound price is less than or equal to said difference, excluding each branch of the subtree from the search path; and if the upper bound price is greater than said difference, include at least one branch of the subtree on the search path.
- 9. The method of claim 1, wherein step (e) includes:
determining a lower bound price of a group of bids of a subtree of the search tree; determining a difference between (1) a sum of the prices of the bid(s) that lie on a search path connected to said subtree and (2) the current price of the best allocation; if the lower bound price is greater than said difference, summing the lower bound price with the sum of the prices of the bid(s) that lie on the search path connected to said subtree, replacing the current price of the best allocation with said sum and excluding each branch of the subtree from the search path; and if the lower bound price is less than or equal to said difference, include at least one branch on the search path.
- 10. The method of claim 6, wherein at least one of:
the bids of each subset of bids include no item in common with the bids in another subset of bids; and at least two bids of each subset include at least one unit, or quantity, of an item.
- 11. The method of claim 1, wherein step (e) includes:
determining an upper bound price of a group of bids in a subtree of the search tree under consideration for inclusion in a candidate allocation; determining a difference between (1) a price of one or more bids of the candidate allocation from which said subtree descends and (2) the current price of the best allocation; if the upper bound price is less than or equal to said difference, excluding the group of bids of the subtree from the candidate allocation and from future searches of the search tree; and if the upper bound price is greater than said difference, continue searching the subtree.
- 12. The method of claim 1, wherein step (e) includes:
determining a lower bound price of a group of bids in a subtree of the search tree under consideration for inclusion in a candidate allocation; determining a difference between (1) a price of one or more bids of the candidate allocation from which said subtree descends and (2) the current price of the best allocation; if the lower bound price is greater than said difference, summing the lower bound price with the price of the candidate allocation from which said subtree descends, replacing the current price of the best allocation with said sum and excluding the group of bids of the subtree from future searches of the search tree; and if the lower bound price is less than or equal to said difference, continue searching the subtree.
- 13. The method of claim 1, wherein the selected bids include at least one of the following attributes:
each selected bid has no item in common with another selected bid; and at least two of the selected bids include at least one unit, or quantity, of an item.
- 14. The method of claim 13, further including, for each path, tallying the number of units of each item on the path.
- 15. The method of claim 13, wherein, in a reverse auction, when at least two of the selected bids include different quantities, or units, of the same item, all quantities of all items are included in each candidate allocation.
- 16. The method of claim 1, wherein:
for each bid having at least one item with an associated reserve price, summing the reserve prices of the bid; and prior to step (e), adjusting the bid price of the bid by subtracting therefrom the sum of the reserve prices of the bid.
- 17. The method of claim 1, further including utilizing one of an OR constraint and an XOR constraint to form a first logical combination of at least two received bids.
- 18. The method of claim 17, further including utilizing the other of the OR constraint and the XOR constraint to form a second logical combination that includes the combination of the first logical combination and one of (1) one other received bid and (2) a third logical combination of two other received bids combined utilizing one of an OR constraint and an XOR constraint.
- 19. The method of claim 1, wherein, in a combinatorial exchange:
each bid includes for each item thereof a desired quantity therefor that is greater than or equal to zero (0); each item and its associated quantity is tagged either for purchase or for sale; and the bid price is tagged as either a price to be received or a price to be paid.
- 20. The method of claim 19, wherein, in step (f), the price of the candidate allocation is “better” when:
in a combinatorial forward auction, the price of the candidate allocation is greater than the current price of the best allocation; in a combinatorial reverse auction, the price of the candidate allocation is less than the current price of the best allocation; and in a combinatorial exchange, the price of the candidate allocation is greater than the current price of the best allocation, wherein the price of the candidate allocation is one of: (1) a sum of the bid prices to be paid for the bids of the candidate allocation; (2) a sum of the bid prices to be received for the bids of the candidate allocation; (3) a difference between the sum of the bid prices to be paid minus the sum of the bid prices to be received for the bids of the candidate allocation; and (4) a function that processes the sum of the bid prices to be paid for and the sum of the bid prices to be received for the bids of the candidate allocation.
- 21. A computer readable medium having stored thereon instructions which, when executed by a processor, cause the processor to perform the steps of:
(a) receive bids, wherein each bid includes one or more items and a bid price associated with said one or more items; (b) choose one of the received bids; (c) select bids from the received bids as a function of the chosen bid, wherein the selected bids include the chosen bid; (d) form from the selected bids at least part of a search tree that defines for each selected bid at least one node that is connected to at least one other node by at least one of an inclusion branch and an exclusion branch; (e) search a plurality of unique paths of the search tree to determine for each path a candidate allocation of the selected bids, wherein each candidate allocation includes a combination of the selected bids that lie along the corresponding search path and a price that is the sum of the bid prices of the combination of the selected bids; and (f) when a price of a candidate allocation is better than a current price of a best allocation, update the best allocation and its price with the candidate allocations and its price.
- 22. The computer readable medium of claim 21, wherein the instructions further cause the processor to perform the step of:
initialize the price of the best allocation to $0 for a forward auction and a very large value for a reverse auction.
- 23. The computer readable medium of claim 22, wherein step (e) includes determining a candidate allocation that includes at least one of:
bids on various levels of the search tree that are connected only via inclusion branches; bids on various levels of the search tree that are connected only via exclusion branches; one bid on one of the lower levels of the search tree connected to one bid on an immediately preceding level via an exclusion branch and each bid on all levels above the lower level connected to a bid on the immediately preceding level via an inclusion branch; and one bid on one of the lower levels of the search tree connected to one bid on the immediately preceding level via an inclusion branch and each bid on all levels above the lower level connected to a bid on the immediately preceding level via an exclusion branch.
- 24. The computer readable medium of claim 23, wherein each search path is comprised of a unique combination of inclusion and exclusion branches of the search tree.
- 25. The computer readable medium of claim 23, wherein step (e) includes performing a depth-first branch-and-bound search on the bids of the search tree.
- 26. The computer readable medium of claim 21, further including:
(g) separating the received bids into two or more subsets of bids; and (h) performing steps (b)-(f) on each subset of bids.
- 27. The computer readable medium of claim 26, wherein:
between steps (g) and (h) the subsets of bids are sorted in descending order based on the number of bids in each subset; and step (h) is performed on each subset of bids in descending order.
- 28. The computer readable medium of claim 21, wherein step (e) includes:
determining a current price of the best allocation; determining an upper bound price of a group of bids in a subtree of the search tree under consideration for inclusion in a candidate allocation; determining a difference between (1) a price of one or more bids of the candidate allocation from which said subtree descends and (2) the current price of the best allocation; if the upper bound price is less than or equal to said difference, excluding the group of bids of the subtree from the candidate allocation and from future searches of the search tree; and if the upper bound price is greater than said difference, continue searching the subtree.
- 29. The computer readable medium of claim 21, wherein step (e) includes:
determining a current price of the best allocation; determining a lower bound price of a group of bids in a subtree of the search tree under consideration for inclusion in a candidate allocation; determining a difference between (1) a price of one or more bids of the candidate allocation from which said subtree descends and (2) the current price of the best allocation; if the lower bound price is greater than said difference, summing the lower bound price with the price of the candidate allocation from which said subtree descends, replacing the current price of the best allocation with said sum and excluding the group of bids of the subtree from future searches of the search tree; and if the lower bound price is less than or equal to said difference, continue searching the subtree.
- 30. The computer readable medium of claim 26, wherein:
the bids of each subset of bids include no item in common with the bids in another subset of bids; or at least two bids of each subset include one unit of the same item.
- 31. The computer readable medium of claim 21, wherein step (e) includes:
determining a current price of the best allocation; determining an upper bound price of a group of bids in a subtree of the search tree under consideration for inclusion in a candidate allocation; determining a difference between (1) a price of one or more bids of the candidate allocation from which said subtree descends and (2) the current price of the best allocation; if the upper bound price is less than or equal to said difference, excluding the group of bids of the subtree from the candidate allocation and from future searches of the search tree; and if the upper bound price is greater than said difference, continue searching the subtree.
- 32. The computer readable medium of claim 21, wherein step (e) includes:
determining a current price of the best allocation; determining a lower bound price of a group of bids in a subtree of the search tree under consideration for inclusion in a candidate allocation; determining a difference between (1) a price of one or more bids of the candidate allocation from which said subtree descends and (2) the current price of the best allocation; if the lower bound price is greater than said difference, summing the lower bound price with the price of the candidate allocation from which said subtree descends, replacing the current price of the best allocation with said sum and excluding the group of bids of the subtree from future searches of the search tree; and if the lower bound price is less than or equal to said difference, continue searching the subtree.
- 33. The computer readable medium of claim 21, wherein the selected bids include at least one of the following attributes:
each selected bid has no item in common with another selected bid; and at least two of the selected bids include different units of the same item.
- 34. The computer readable medium of claim 33, wherein the instructions further cause the processor to perform the step of:
tally the number of units of each item on each path.
- 35. The computer readable medium of claim 21, wherein the instructions further cause the processor to perform the steps of:
for each bid having at least one item with an associated reserve price, summing the reserve prices of the bid; and prior to step (e), adjusting the bid price by subtracting the sum of the reserve prices therefrom.
- 36. The computer readable medium of claim 21, further including utilizing one of an OR constraint and an XOR constraint to form a first logical combination of at least two received bids.
- 37. The computer readable medium of claim 36, further including utilizing the other of the OR constraint and the XOR constraint to form a second logical combination that includes the combination of the first logical combination and one of (1) one other received bid and (2) a third logical combination of two other received bids combined utilizing one of an OR constraint and an XOR constraint.
- 38. The computer readable medium of claim 33, wherein, in a reverse auction, the instructions further cause the processor to perform the step of:
include all units of all items in each candidate allocation when at least two of the selected bids include different units of the same item.
- 39. The computer readable medium of claim 21, wherein, when each bid includes for each item thereof a desired quantity therefor and the desired quantity of each item is 0 or more, the instructions further cause the processor to perform the steps of:
tagging each item and its associated quantity either for purchase or for sale; and tagging the bid price as either a price to be received or a price to be paid.
- 40. The computer readable medium of claim 39, wherein, in step (f), the price of the candidate allocation is better when:
in a combinatorial forward auction, the price of the candidate allocation is greater than the current price of the best allocation; in a combinatorial reverse auction, the price of the candidate allocation is less than the current price of the best allocation; and in a combinatorial exchange, the price of the candidate allocation is greater than the current price of the best allocation, wherein, in an exchange, the price of the candidate allocation is one of:
(1) a sum of the bid prices to be paid for the bids of the candidate allocation; (2) a sum of the bid prices to be received for the bids of the candidate allocation; or (3) a difference between the sum of the bid prices to be paid minus the sum of the bid prices to be received for the bids of the candidate allocation; and (4) a function that processes the sum of the bid prices to be paid for and the sum of the bid prices to be received for the bids of the candidate allocation.
- 41. A method for determining a winning allocation of bids in a combinatorial exchange, combinatorial forward auction or combinatorial reverse auction comprising:
(a) receiving a plurality of bids, wherein each bid includes one or more items and an associated bid price for said one or more items; (b) utilizing a branch on bid tree search technique to create from the received bids a plurality of disjoint candidate allocations of bids; (c) determining a price for each candidate allocation by combining the bid prices of the bids forming the candidate allocation; and (d) selecting the candidate allocation having an optimal price.
- 42. The method of claim 41, further including:
choosing one of the plurality of received bids, selecting bids from the plurality of received bids as a function of the chosen bid, wherein the selected bids include the chosen bid and each selected bid has no item in common with another selected bid, and forming the search tree from the selected bids; and step (c) includes searching a plurality of paths of the search tree to determine a like plurality of candidate allocations of the selected bids.
- 43. The method of claim 41, further including:
separating the received bids into at least one group of bids, wherein the bids of different groups have no items in common; and performing steps (b) to (d) on each group of bids.
- 44. The method of claim 43, wherein:
each bid is only in one group; and each group includes at least one bid.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation-in-part of U.S. patent application Ser. No. 09/789,480, filed Feb. 20, 2001 which claims priority from U.S. Provisional Patent Application Serial No. 60/183,674, filed Feb. 18, 2000.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60183674 |
Feb 2000 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09789480 |
Feb 2001 |
US |
Child |
10410859 |
Apr 2003 |
US |