IP Library Granted Patent US 10,776,846
Granted Patent B2
US 10,776,846 · App. 15/221,537 · Granted Sep 15, 2020

Assortment optimization

Inventors: Juan Chaneton (Cambridge, MA); Gregory Yu (Boston, MA); Vinayak Sachidananda (Lanham, MD); Vivek Farias (Newton, MA)
Assignee: NIKE, Inc.
G06Q30/0625G06F16/24535G06Q10/06315G06F16/93
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,776,846
App. No.
15/221,537
Granted
Sep 15, 2020
Kind
B2
Abstract

A scalable architecture to solve assortment problems. Relevant data is loaded into various data stores throughout the architecture. A user specifies the problem using an interactive user interface. A dispatcher process takes the problem and delegates it to individual data stores. The data stores solve their delegated problems and return the results to the dispatcher, which aggregates the results and presents them to the user as an optimal solution to the assortment problem.

Claims (36)

1. A method for retail assortment optimization using a computer comprising a processor and a memory storing non-transitory instructions configured to be executed by the processor, the method comprising:

receiving, at a query dispatcher engine and via a graphical user interface (GUI) for specifying one or more filters from a data collection, a request for an optimal assortment of items from the data collection after application of the one or more specified filters;

transforming, at the query dispatcher engine, the received request into a plurality of requests for cost values;

transforming, at the query dispatcher engine, each of the plurality of requests for cost values into a plurality of sub-queries for cost values;

servicing the plurality of sub-queries at a plurality of data stores external to the query dispatcher engine and connected to the query dispatcher engine by one or more data connections, each of the sub-queries being assigned to a data store from the plurality of data stores for servicing that sub-query, each data store having a computer-readable memory storing a collection of tuples of values from the data collection and a processor configured to execute a filter operation on the stored collection of tuples and an aggregation operation on the stored collection of tuples, wherein the filter operation comprises application of the one or more specified filters, wherein servicing a given sub-query comprises computing, at the assigned data store, a sum of a value function for each data value having a ratio of price and cost exceeding a cost value associated with the given sub-query and grouping, at the data store, the sum by item, wherein the data collection is divided among the plurality of data stores, wherein the data collection is not stored at the query dispatcher engine; and

upon determining that the plurality of data stores is too large to be serviced by the query dispatcher engine, adding, to the query dispatcher engine or to the plurality of data stores, one or more additional query dispatcher engines for servicing the plurality of data stores, wherein the data collection is divided among the plurality of data stores in a collectively exhaustive manner, with each data store storing a portion of the data collection.

2. The method of claim 1 where the values of each tuple include an item name, a cost, a price, and a quantity.

3. The method of claim 1 wherein the received request includes at least one tag defining a subset of tuples having a value matching the at least one tag, and servicing each of the sub-queries comprises returning a subset of those tuples having a value matching the at least one tag.

4. The method of claim 3 wherein servicing the subquery comprises computing the sum of a value function for each tuple having a value matching the at least one tag.

5. The method of claim 1 wherein servicing the subquery comprises computing the sum of a value function for each tuple having a ratio of price and cost exceeding the cost value associated with the sub-query and grouping the sum by item.

6. The method of claim 5 wherein servicing the subquery further comprises testing the sum of the value function against a specified threshold value.

7. The method of claim 1 where the data store is a virtual machine.

8. The method of claim 1 further comprising returning an assortment that is optimal for the specified cost values.

9. The method of claim 1 wherein the data store is a database.

10. A system for retail assortment optimization, the system comprising:

one or more processors and a memory, the memory storing instructions which, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

receiving, at a query dispatcher engine and via a graphical user interface (GUI) for specifying one or more filters from a data collection, a request for an optimal assortment of items from the data collection after application of the one or more specified filters;

transforming, at the query dispatcher engine, the received request into a plurality of requests for cost values;

transforming, at the query dispatcher engine, each of the plurality of requests for cost values into a plurality of sub-queries for cost values;

servicing the plurality of sub-queries at a plurality of data stores external to the query dispatcher engine and connected to the query dispatcher engine by one or more data connections, each of the sub-queries being assigned to a data store from the plurality of data stores for servicing that sub-query, each data store having a computer-readable memory storing a collection of tuples of values from the data collection and a processor configured to execute a filter operation on the stored collection of tuples and an aggregation operation on the stored collection of tuples, wherein the filter operation comprises application of the one or more specified filters, wherein servicing a given sub-query comprises computing, at the assigned data store, a sum of a value function for each data value having a ratio of price and cost exceeding a cost value associated with the given sub-query and grouping, at the data store, the sum by item, wherein the data collection is divided among the plurality of data stores, wherein the data collection is not stored at the query dispatcher engine; and

upon determining that the plurality of data stores is too large to be serviced by the query dispatcher engine, adding, to the query dispatcher engine or to the plurality of data stores, one or more additional query dispatcher engines for servicing the plurality of data stores, wherein the data collection is divided among the plurality of data stores in a collectively exhaustive manner, with each data store storing a portion of the data collection.

11. The system of claim 10 wherein at least one data store from the plurality of data stores is operable as a query dispatcher engine.

12. The system of claim 10 wherein the query dispatcher engine is operable as a data store from the plurality of data stores.

13. The system of claim 10 wherein the filter operation selects those tuples from the collection of tuples having a value matching a specified tag.

14. The system of claim 10 wherein the query dispatcher engine is implemented on a computer that is separate from at least one computer implementing at least one data store from the plurality of data stores.

15. The system of claim 10 wherein at least one data store from the plurality of data stores is further configured to service a subquery by computing the sum of a value function for each tuple having a ratio of price and cost exceeding the cost value associated with the sub-query and grouping the sum by item.

16. The system of claim 15 wherein at least one data store from the plurality of data stores is further configured to service a subquery by testing the sum of the value function against a specified threshold value.

17. The system of claim 10 wherein at least one data store from the plurality of data stores is a virtual machine.

18. The system of claim 10 wherein at least one data store from the plurality of data stores is a database.

19. A non-transitory computer-readable medium storing computer-executable instructions which, when executed by one or more computers, cause the one or more computers to perform operations for retail assortment optimization, the operations comprising:

receiving, at a query dispatcher engine and via a graphical user interface (GUI) for specifying one or more fillers from a data collection, a request for an optimal assortment of items from the data collection after application of the one or more specified filters;

transforming, at the query dispatcher engine, the received request into a plurality of requests for cost values;

transforming, at the query dispatcher engine, each of the plurality of requests for cost values into a plurality of sub-queries for cost values;

servicing the plurality of sub-queries at a plurality of data stores external to the query dispatcher engine and connected to the query dispatcher engine by one or more data connections, each of the sub-queries being assigned to a data store from the plurality of data stores for servicing that sub-query, each data store having a computer-readable memory storing a collection of tuples of values from the data collection and a processor configured to execute a filter operation on the stored collection of tuples and an aggregation operation on the stored collection of tuples, wherein the filter operation comprises application of the one or more specified filters, wherein servicing a given sub-query comprises computing, at the assigned data store, a sum of a value function for each data value having a ratio of price and cost exceeding a cost value associated with the given sub-query and grouping, at the data store, the sum by item, wherein the data collection is divided among the plurality of data stores, wherein the data collection is not stored at the query dispatcher engine; and

upon determining that the plurality of data stores is too large to be serviced by the query dispatcher engine, adding, to the query dispatcher engine or to the plurality of data stores, one or more additional query dispatcher engines for servicing the plurality of data stores, wherein the data collection is divided among the plurality of data stores in a collectively exhaustive manner, with each data store storing a portion of the data collection.

20. The computer-readable medium of claim 19 wherein servicing each of the subqueries comprises computing the sum of a value function for each tuple having a ratio of price and cost exceeding the cost value associated with the sub-query and grouping the sum by item.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2019
From: CELECT, INC.
To: NIKE, INC.
Reel/Frame 051090/0344 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE INVENTOR PREVIOUSLY RECORDED AT REEL: 039560 FRAME: 0089. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jul 2, 2019
From: CHANETON, JUAN; YU, GREGORY; SACHIDANANDA, VINAYAK; FARIAS, VIVEK
To: CELECT, INC.
Reel/Frame 049672/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2016
From: CHANETON, JUAN; YU, GREGORY; SACHIDANANDA, VINAYAK; FARIAS, VIVEK
To: CELECT, INC.
Reel/Frame 039560/0089 →
Continuity (1)
Related Publication 20180032934A1 · Feb 1, 2018