assortment planning for p&g
TRANSCRIPT
1
Assortment Planning and Optimization Based on Localized Demand
Lee Saeugling
First Reader: Jeffrey Camm
Second Reader: Michael Fry
2
Abstract
We consider the problem of optimizing assortments for a single product category across a large
national retail chain. The objective of this paper is to develop a methodology for picking from 1 to N
(complete localization) assortments in order to maximize revenue. We first show how to estimate
demand based on product attributes. SKUs are broken into a set of attribute levels and the fractional
demand for these levels is estimated along with an overall demand for the attribute space. We use the
estimated fractional demand and overall demand to create from 1 to N assortments and assign each
store a single assortment in order to maximize revenue. We found a significant increase in revenue
when going from one national assortment to complete localization. Further we found that most of the
revenue increase of complete localization can be accomplished with far fewer than N assortments. The
advantage to our approach is it only requires transactional data that all retailers have.
Introduction
The problem addressed in this paper was presented to us by Procter & Gamble (P&G). The
premise was to formulate an approach to optimize assortments for a single product category across a
large national retail chain. That is how best to choose assortments in order to maximize revenue while
minimizing cost and complexity for the retailer. The simplest and least costly solution is to have one
assortment for all stores in the retail chain. However this solution does not take into consideration that
the demand in a product category is not uniform across the nation and thus will not maximize revenue.
An easy and intuitive example of differing localized demand is that luxury goods are in higher demand in
areas with high median household incomes and low demand in areas with low median household
incomes. Given this, the solution that can best meet local demand and maximize revenue would be for
each store to have a unique assortment based on the local demand. However this solution is highly
complex and costly for a large national retailer to implement. Therefore the goal of this paper is to
establish a methodology to both maximize localized demand captured by the unique assortment
solution while minimizing the cost and complexity.
Given the above problem, the first questions is how to determine local demand within a product
category. The approach taken in this paper is based on the ideas presented in “A Demand Estimation
Procedure for Retail Assortment Optimization with Results from Implementation” (Fisher and
Vaidyanathan, 2014). The basic idea being that a product (SKU) can be thought of as a collection of
attributes. For example we could think of the attributes of laundry detergent being brand, size, liquid or
powder, pod or bulk, etc. We assume people have preference for product attribute levels and buy the
SKU with the attribute combination of most utility for them. It follows that there is a fractional demand
between zero and one for each level of an attribute (i.e. attribute of size with levels small, medium and
large) with the sum of the attribute levels equal to one. Fractional demand is defined as the fraction of
customers whose first choice for attribute a is level i. We assume the demand for a SKU is the product of
the fractional demand of attributes multiplied by an overall demand for the attribute space. Overall
demand for the attribute space being the product category demand if all SKUs with every possible
attribute combination were offered. The estimates of fractional demand and overall demand are found
using a nonlinear optimization that minimizes the sum of absolute deviation of the actual observed sales
and the estimated demand for individual SKU currently in assortment. Ideally this optimization would be
done for every store in the chain using the individual stores transactional data for the product category
of interest. However this was not practical for this project. We therefore simplified the problem by
3
clustering stores into ten groups. The details of how this was done can be found in Adhikarla (2015) and
Das (2015).
Once the above demand estimation problem is solved we use the estimated attributes fractional
demand and overall demand for the attribute space for all stores as inputs for assortment planning. For
assortment planning a second optimization problem is used. In this case a maximum number of SKUs
(the number of SKUs to allow in each assortment would be a business decision and a few options will be
explored later in the example section) are chosen for assortments 1 to N (N being the number of stores
in the chain) in order to maximize revenue. One assortment is the simplest solution and N is the most
complex solution both described above. The optimization could also be done to maximize profit or as a
set covering problem where SKUs are chosen to maximize the number of households whose desired SKU
is in the assortment. The optimization must simultaneously pick SKUs for each assortment and assign
stores an assortment. For example if the optimization is run for two assortments SKUs will be picked for
both assortments while simultaneous assigning each store to use either assortment one or two. This
could mean half the stores use assortment one and half assortment two but doesn’t have to and in fact
is unlikely. As long as stores use one and only one assortment any percentage split over the two
assortments is allowed and will be done in order to maximize revenue. This leads directly to using two
classes of binary variables one for picking SKUs in assortment and one for assigning stores to an
assortment where 1 indicates the SKU is in assortment and the store uses that assortment zero if not
respectively. Multiplying these two binary variables would give a 1 if SKU i contributed to the revenue of
store s, zero if not. However this means the optimization would be nonlinear and integer which is a very
difficult problem to solve and in fact we could never be sure we reached the true optimum. For this
reason the problem was transformed into a linear integer program with a third binary variable. While
the problem is now solvable the integer nature can lead to an untenable amount of computer time to
solve. The “solution” for this issues will be discussed in the example section. Also in the example section
based on a business consideration brought up by P&G the objective function will be altered to penalize
assortments that do not include a brand, the reasoning being if a store does not carry a customer’s
preferred brand in the product category of interest, they may go elsewhere and thus the store loses all
revenue for all other products that customer would have purchased.
Example
The model was built and tested on the open source data set “Carbo-Loading” provided by
dunnhumby. Only the data for the pasta category was used which included over 1,000,000 transactions
from 382 stores. The first step was to decide on what attributes were important the details of this can
be found in Adhikarla (2015) and Das (2015). The attributes used were brand, pasta type (i.e. spaghetti,
linguine, etc.) and size/price (The SKU size was classified as large or small and within each size as being
high, medium or low priced). Next I present how demand estimation was done.
Demand Estimation
As stated earlier, ideally demand estimation would be done for every store in the retail chain.
However for simplification purposes the stores were clustered into ten groups, the details of which can
be found in Adhikarla (2015) and Das (2015). The transactional data was aggregated for each of the
clusters. This was necessary to make the second optimization feasible given our available computer
4
power. The following model was used for demand estimation on all ten clusters. The optimization was
carried out on AMPL using the nonlinear package “knitro” from Ziena Optimization LLC. Because of the
nonlinearity of the objective function the multi-start option was used. While we cannot be sure of
reaching the global optimum the multi-start options allows us to be reasonably confident our
estimations are close to the true optimum. The model estimates the fractional demand of each attribute
brand, pasta shape and size/price as well as the overall demand for the three dimensional attribute
space. The overall demand is limited to three times the transaction data count because substitution is
not considered. The demand can become artificially high without substitution and thus is limited. The
estimations are done by minimizing the absolute deviation of the actual SKU count from the
transactional data and the estimated demand provided by multiplying the attribute fractional demand
and the overall demand. Note that the estimated demand is only used in the objective function for the
three attribute level combination of SKUs currently carried in assortment. Once we have estimates of
the attribute fractional demand and the overall demand we are able to estimate the demand of all
attribute level combinations. This is important because it allows for bringing new products into
assortment. It may suggest SKUs that are not currently manufactured should be, because the demand
for their attribute level combination is high.
Demand Estimation Model
Let
𝐵𝑖 = 𝑇ℎ𝑒 𝑒𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑 𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑎𝑙 𝑑𝑒𝑚𝑎𝑛𝑑 𝑓𝑜𝑟 𝑏𝑟𝑎𝑛𝑑 𝑖
𝑃𝑗 = 𝑇ℎ𝑒 𝑒𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑 𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑎𝑙 𝑑𝑒𝑚𝑎𝑛𝑑 𝑓𝑜𝑟 𝑝𝑎𝑠𝑡𝑎 𝑠ℎ𝑎𝑝𝑒 𝑗
𝑆𝑘 = 𝑇ℎ𝑒 𝑒𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑 𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑎𝑙 𝑑𝑒𝑚𝑎𝑛𝑑 𝑓𝑜𝑟 𝑠𝑖𝑧𝑒 − 𝑝𝑟𝑖𝑐𝑒 𝑘
𝐷 = 𝑇𝑜𝑡𝑎𝑙 𝑒𝑠𝑡𝑖𝑚𝑎𝑡𝑒𝑑 𝑑𝑒𝑚𝑎𝑛𝑑
𝑀𝑖𝑛𝑖𝑚𝑖𝑧𝑒 ∑ |𝑐𝑜𝑢𝑛𝑡(𝑖, 𝑗, 𝑘) − 𝐵𝑖𝑃𝑗𝑆𝑘𝐷|(𝑖,𝑗,𝑘)∈𝑎𝑠𝑠𝑜𝑟𝑡𝑚𝑒𝑛𝑡
Where
𝑐𝑜𝑢𝑛𝑡(𝑖,𝑗,𝑘) = 𝑁𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑝𝑟𝑜𝑑𝑢𝑐𝑡𝑠 𝑠𝑜𝑙𝑑 𝑤𝑖𝑡ℎ 𝑎𝑡𝑡𝑟𝑖𝑏𝑢𝑡𝑒 𝑐𝑜𝑚𝑏𝑖𝑛𝑎𝑡𝑖𝑜𝑛 (𝑖, 𝑗, 𝑘)
s.t.
∑ 𝐵𝑖
𝑖
= 1
∑ 𝑃𝑗 = 1
𝑗
∑ 𝑆𝑘 = 1
𝑘
∑ 𝑐𝑜𝑢𝑛𝑡(𝑖, 𝑗, 𝑘) ≤ 𝐷 ≤ 3 ∗ ∑ 𝑐𝑜𝑢𝑛𝑡(𝑖, 𝑗, 𝑘)
(𝑖,𝑗,𝑘)∈𝑎𝑠𝑠𝑜𝑟𝑡𝑚𝑒𝑛𝑡(𝑖,𝑗,𝑘)∈𝑎𝑠𝑠𝑜𝑟𝑡𝑚𝑒𝑛𝑡
5
After the optimization is run for all ten clusters the estimated fractional attribute demand and
overall demand are used as input parameters for the assortment planning optimization. The fractional
demand for the attribute brand, size/price and pasta shape by cluster is presented in Table 1(A-C) and
overall demand by cluster in Table 2.
Table 1 Attribute Fractional Demand by Cluster
A) Fractional Demand for Brand by Cluster
Brand Cluster1 Cluster2 Cluster3 Cluster4 Cluster5 Cluster6 Cluster7 Cluster8 Cluster9 Cluster10
Al_Dente 0.024 0.010 0.015 0.021 0.027 0.012 0.011 0.011 0.012 0.016
Barilla 0.031 0.016 0.015 0.153 0.047 0.044 0.019 0.019 0.122 0.028
Barilla_Plus 0.005 0.015 0.025 0.006 0.007 0.008 0.017 0.007 0.008 0.028
Creamette 0.212 0.096 0.024 0.099 0.208 0.172 0.102 0.185 0.229 0.033
DaVinci 0.006 0.006 0.008 0.025 0.000 0.006 0.005 0.005 0.010 0.002
Dececco 0.022 0.013 0.006 0.020 0.000 0.014 0.009 0.019 0.024 0.022
Healthy_Harvest 0.033 0.036 0.021 0.022 0.032 0.042 0.049 0.082 0.020 0.034
Hodgson_Mills 0.009 0.022 0.012 0.012 0.001 0.009 0.031 0.021 0.013 0.032
Maggi_Spaetzle 0.029 0.014 0.016 0.017 0.021 0.012 0.011 0.019 0.016 0.013
Mueller 0.018 0.044 0.084 0.011 0.013 0.042 0.050 0.010 0.008 0.071
No_Yolks 0.034 0.071 0.076 0.023 0.032 0.106 0.068 0.039 0.023 0.068
Pennsylvania_Dutch 0.029 0.022 0.016 0.019 0.027 0.013 0.015 0.020 0.016 0.016
Private_Label 0.413 0.384 0.405 0.296 0.398 0.361 0.383 0.376 0.282 0.396
Private_Label_Premium 0.036 0.104 0.122 0.070 0.034 0.038 0.090 0.036 0.053 0.103
Private_Label_Value 0.007 0.006 0.007 0.002 0.003 0.008 0.006 0.003 0.001 0.001
Ronzoni 0.008 0.025 0.075 0.023 0.010 0.017 0.036 0.007 0.014 0.058
San_Giorgio 0.059 0.033 0.008 0.049 0.051 0.012 0.026 0.061 0.052 0.012
Sugar_Buster 0.024 0.012 0.008 0.017 0.022 0.023 0.009 0.012 0.014 0.005
Al_Dente 0.024 0.010 0.015 0.021 0.027 0.012 0.011 0.011 0.012 0.016
Colavita 0.000 0.012 0.015 0.018 0.026 0.013 0.009 0.000 0.015 0.019
Eden 0.000 0.014 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
Gooch 0.000 0.012 0.010 0.016 0.000 0.012 0.008 0.020 0.016 0.005
La_Moderna 0.000 0.012 0.006 0.000 0.000 0.012 0.000 0.000 0.000 0.004
Orzo 0.000 0.010 0.010 0.011 0.022 0.000 0.000 0.000 0.013 0.008
Pasta_Shoppe 0.000 0.011 0.013 0.016 0.000 0.000 0.009 0.014 0.013 0.008
Alessi 0.000 0.000 0.000 0.017 0.020 0.012 0.008 0.017 0.012 0.000
Kedem 0.000 0.000 0.000 0.017 0.000 0.000 0.011 0.000 0.000 0.000
Mothers 0.000 0.000 0.000 0.019 0.000 0.000 0.009 0.000 0.000 0.003
Dell_Alpe 0.000 0.000 0.000 0.000 0.000 0.012 0.009 0.000 0.014 0.007
Mrs_Weiss 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.018 0.000 0.000
Arlow 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.006
6
B) Fractional Demand Size/Price by Cluster
Size/Price Cluster1 Cluster2 Cluster3 Cluster4 Cluster5 Cluster6 Cluster7 Cluster8 Cluster9 Cluster10
LARGE_HIGH 0.028 0.018 0.027 0.018 0.021 0.015 0.026 0.014 0.018 0.028
LARGE_LOW 0.529 0.609 0.648 0.508 0.517 0.508 0.617 0.537 0.556 0.634
LARGE_MEDIUM 0.315 0.132 0.107 0.336 0.308 0.302 0.125 0.311 0.326 0.124
SMALL_HIGH 0.031 0.003 0.019 0.013 0.034 0.016 0.012 0.025 0.008 0.017
SMALL_LOW 0.066 0.177 0.134 0.079 0.068 0.124 0.156 0.067 0.069 0.121
SMALL_MEDIUM 0.032 0.061 0.066 0.047 0.052 0.034 0.064 0.047 0.023 0.076
C) Fractional Demand of Pasta Shape by Cluster
Pasta Shape Cluster1 Cluster2 Cluster3 Cluster4 Cluster5 Cluster6 Cluster7 Cluster8 Cluster9 Cluster10
FETTUCCINE 0.301 0.249 0.242 0.461 0.345 0.296 0.244 0.331 0.451 0.249
FUSILLI 0.039 0.007 0.056 0.046 0.015 0.016 0.017 0.007 0.000 0.035
MACARONI 0.189 0.156 0.091 0.010 0.179 0.161 0.150 0.169 0.095 0.068
NOODLES 0.032 0.152 0.177 0.056 0.020 0.043 0.157 0.014 0.051 0.178
OTHER 0.048 0.017 0.010 0.018 0.016 0.037 0.007 0.036 0.000 0.005
PENNE 0.081 0.076 0.067 0.092 0.104 0.093 0.072 0.087 0.078 0.067
RIGATO 0.166 0.154 0.136 0.217 0.207 0.185 0.139 0.172 0.185 0.126
SPAGHETTI 0.116 0.185 0.206 0.069 0.101 0.128 0.200 0.161 0.090 0.261
VERMICELLI 0.028 0.004 0.015 0.030 0.014 0.040 0.014 0.023 0.050 0.011
Table 2 Overall Demand by Cluster
Demand
Cluster1 274,348
Cluster2 327,348
Cluster3 401,607
Cluster4 123,551
Cluster5 51,304
Cluster6 249,349
Cluster7 722,303
Cluster8 552,190
Cluster9 235,555
Cluster10 282,233
Assortment Planning
For this optimization we choose to maximize revenue. If we want to pick any SKU within the
attribute space, there must be a price associated with every attribute level combination in the attribute
7
space. Because many of these attribute level combinations are not in the transactional data, there are
no associated prices. In order to have prices for the entire attribute space we would need a way to price
SKUs based on their attribute level combination. This however was beyond the scope of the project.
Only SKUs carried by at least one store in the retail chain were used for assortment planning because
they have an associated price. Prices of SKUs were averaged over all stores, giving one price for each of
the 110 available SKUs. These prices were used as an input parameter for assortment planning.
Assortment Planning Pure Revenue Model
There are six input parameters: the fractional demand for the three attribute levels by cluster,
the overall demand by cluster, the price of each SKU and the maximum number of SKUs allowed per
assortment (max_sku). The decision variables are whether or not SKU i should be used in assortment a
and whether or not store s uses assortment a. As described earlier, this logically leads to multiplying the
two binary variables together in order to determine if SKU i in assortment a contributes to the revenue
of store s. However this creates a nonlinear integer objective which is very difficult to solve. Therefore
the objective was linearized by introducing a third binary variable y. This variable takes the value 1 if
both binary decision variable are 1, zero otherwise. This is done by imposing the constraints that y must
be less than or equal to both binary decision variables and 1 plus y be greater than or equal to the sum
of the two binary decision variables. The model for assortment planning where the objective is to
maximize revenue is presented below.
Pure Revenue Model
Let
𝑅(𝑎,𝑖,𝑗,𝑘) = {0 𝑖𝑓 𝑛𝑜𝑡1 𝑖𝑓 𝑆𝐾𝑈 (𝑖,𝑗,𝑘)∈𝑎𝑠𝑠𝑜𝑟𝑡𝑚𝑒𝑛𝑡 𝑎
𝑈(𝑠,𝑎) = {0 𝑖𝑓 𝑛𝑜𝑡1 𝑖𝑓 𝑠𝑡𝑜𝑟𝑒 𝑠 𝑢𝑠𝑒𝑠 𝑎𝑠𝑠𝑜𝑟𝑡𝑚𝑒𝑛𝑡 𝑎
𝑦(𝑎,𝑖,𝑗,𝑘,𝑠) = {0 𝑖𝑓 𝑛𝑜𝑡1 𝑖𝑓 𝑏𝑜𝑡ℎ 𝑅 𝑎𝑛𝑑 𝑈 𝑒𝑞𝑢𝑎𝑙 1
𝑀𝑎𝑥𝑖𝑚𝑖𝑧𝑒 ∑ ∑ ∑ 𝐵𝑖,𝑠
(𝑖,𝑗,𝑘)𝑠𝑎
𝑃𝑗,𝑠𝑆𝑘,𝑠𝐷𝑠𝑝𝑟𝑖𝑐𝑒(𝑖,𝑗,𝑘)𝑦(𝑎,𝑖,𝑘,𝑠)
Where
𝐵𝑖,𝑠 = 𝑇ℎ𝑒 𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑎𝑙 𝑑𝑒𝑚𝑎𝑛𝑑 𝑓𝑜𝑟 𝑏𝑟𝑎𝑛𝑑 𝑖 𝑖𝑛 𝑠𝑡𝑜𝑟𝑒 𝑠
𝑃𝑗,𝑠 = 𝑇ℎ𝑒 𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑎𝑙 𝑑𝑒𝑚𝑎𝑛𝑑 𝑓𝑜𝑟 𝑝𝑎𝑠𝑡𝑎 𝑠ℎ𝑎𝑝𝑒 𝑗 𝑖𝑛 𝑠𝑡𝑜𝑟𝑒 𝑠
𝑆𝑘,𝑠 = 𝑇ℎ𝑒 𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑎𝑙 𝑑𝑒𝑚𝑎𝑛𝑑 𝑓𝑜𝑟 𝑠𝑖𝑧𝑒 − 𝑝𝑟𝑖𝑐𝑒 𝑘
𝐷𝑠 = 𝑂𝑣𝑒𝑟𝑎𝑙𝑙 𝑑𝑒𝑚𝑎𝑛𝑑 𝑓𝑜𝑟 𝑠𝑡𝑜𝑟𝑒 𝑠
s.t
∑ ∑ ∑ 𝑅(𝑎,𝑖,𝑗,𝑘) ≤ max _𝑠𝑘𝑢 ∀ 𝑎
𝑘𝑗𝑖
∑ 𝑈(𝑠,𝑎) = 1 ∀ 𝑠
𝑎
𝑈(𝑠,𝑎) + 𝑅(𝑎,𝑖,𝑗,𝑘) ≤ 1 + 𝑦(𝑎,𝑖,𝑗,𝑘,𝑠) ∀ (𝑎, 𝑖, 𝑗, 𝑘, 𝑠)
8
𝑅(𝑎,𝑖,𝑗,𝑘) ≥ 𝑦(𝑎,𝑖,𝑗,𝑘,𝑠) ∀ (𝑎, 𝑖, 𝑗, 𝑘, 𝑠)
𝑈(𝑠,𝑎) ≥ 𝑦(𝑎,𝑖,𝑗,𝑘,𝑠) ∀ (𝑎, 𝑖, 𝑗, 𝑘, 𝑠)
This model was executed in AMPL using the gurobi solver. A run file with a for loop was used to
run the optimization from 1 to 10 assortments. This was performed for a range of max SKU in
assortment values.
Assortment Planning Penalized Objective Model
The above model however does not addresses P&G’s concern raised earlier. They wanted a way
to penalize the objective function every time a brand was left completely out of the assortment. Their
concern was, if a customer’s preferred brand was not carried, the store would not only lose the revenue
of that customer in that product category but their business entirely. This lead to the idea of brands with
high loyalty, if left out of the assortment should penalize the objective function more than those with
low loyalty, the reasoning being the higher the loyalty the more likely a customer is to choose to shop
somewhere else if they can’t find their desired brand. Loyalty scores between 0 and 1 were created for
each brand. The details of how this was done can be found in Adhikarla (2015) and Das (2015). In order
to penalize the objective function for not including a brand in an assortment, another set of binary
variables was introduced. A variable x was created that took the value 1 if brand i was in assortment a,
zero if not. Because we want to penalize the objective if brand i is not in assortment a variable c was
created that took the value 1 if x was zero and zero if x was 1. The objective should only be penalized if
store s uses assortment a, the variable introduced earlier U, that indicates whether or not store s uses
assortment a is therefore also needed. This leads to the same problem of nonlinearity if the product of c
and U were used. The same logic used earlier was used to introduce a variable t that is 1 if and only if c
and U are 1, zero otherwise. The objective function is penalized by multiplying the loyalty score times
the revenue that brand i not carried in assortment a would have contributed to revenue. The new
penalized model is shown below.
Penalized Objective Model
Let
𝑅(𝑎,𝑖,𝑗,𝑘) = {0 𝑖𝑓 𝑛𝑜𝑡1 𝑖𝑓 𝑆𝐾𝑈 (𝑖,𝑗,𝑘)∈𝑎𝑠𝑠𝑜𝑟𝑡𝑚𝑒𝑛𝑡 𝑎
𝑈(𝑠,𝑎) = {0 𝑖𝑓 𝑛𝑜𝑡1 𝑖𝑓 𝑠𝑡𝑜𝑟𝑒 𝑠 𝑢𝑠𝑒𝑠 𝑎𝑠𝑠𝑜𝑟𝑡𝑚𝑒𝑛𝑡 𝑎
𝑦(𝑎,𝑖,𝑗,𝑘,𝑠) = {0 𝑖𝑓 𝑛𝑜𝑡1 𝑖𝑓 𝑏𝑜𝑡ℎ 𝑅 𝑎𝑛𝑑 𝑈 𝑒𝑞𝑢𝑎𝑙 1
𝑥(𝑖,𝑎) = {0 𝑖𝑓 𝑛𝑜𝑡1 𝑖𝑓 𝑏𝑟𝑎𝑛𝑑 𝑖 𝑖𝑛 𝑎𝑠𝑠𝑜𝑟𝑡𝑚𝑒𝑛𝑡 𝑎
𝑐(𝑖,𝑎) = {0 𝑖𝑓 𝑥=11 𝑖𝑓 𝑥=0
𝑡(𝑖,𝑎,𝑠) = {0 𝑖𝑓 𝑛𝑜𝑡1 𝑖𝑓 𝑏𝑜𝑡ℎ 𝑈 𝑎𝑛𝑑 𝑐 𝑒𝑞𝑢𝑎𝑙 1
𝑀𝑎𝑥𝑖𝑚𝑖𝑧𝑒 ∑ ∑ ∑ (𝐵𝑖,𝑠
(𝑖,𝑗,𝑘)𝑠𝑎
𝑃𝑗,𝑠𝑆𝑘,𝑠𝐷𝑠𝑝𝑟𝑖𝑐𝑒(𝑖,𝑗,𝑘)𝑦(𝑎,𝑖,𝑘,𝑠) − 𝐵𝑖,𝑠𝑃𝑗,𝑠𝑆𝑘,𝑠𝐷𝑠𝐿𝑖𝑝𝑟𝑖𝑐𝑒(𝑖,𝑗,𝑘)𝑡(𝑖,𝑎,𝑠))
Where
𝐵𝑖,𝑠 = 𝑇ℎ𝑒 𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑎𝑙 𝑑𝑒𝑚𝑎𝑛𝑑 𝑓𝑜𝑟 𝑏𝑟𝑎𝑛𝑑 𝑖 𝑖𝑛 𝑠𝑡𝑜𝑟𝑒 𝑠
𝑃𝑗,𝑠 = 𝑇ℎ𝑒 𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑎𝑙 𝑑𝑒𝑚𝑎𝑛𝑑 𝑓𝑜𝑟 𝑝𝑎𝑠𝑡𝑎 𝑠ℎ𝑎𝑝𝑒 𝑗 𝑖𝑛 𝑠𝑡𝑜𝑟𝑒 𝑠
9
𝑆𝑘,𝑠 = 𝑇ℎ𝑒 𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛𝑎𝑙 𝑑𝑒𝑚𝑎𝑛𝑑 𝑓𝑜𝑟 𝑠𝑖𝑧𝑒 − 𝑝𝑟𝑖𝑐𝑒 𝑘
𝐷𝑠 = 𝑂𝑣𝑒𝑟𝑎𝑙𝑙 𝑑𝑒𝑚𝑎𝑛𝑑 𝑓𝑜𝑟 𝑠𝑡𝑜𝑟𝑒 𝑠
𝐿𝑖 = 𝑙𝑜𝑦𝑎𝑙𝑡𝑦 𝑠𝑐𝑜𝑟𝑒 𝑓𝑜𝑟 𝑏𝑟𝑎𝑛𝑑 𝑖
𝑝𝑟𝑖𝑐𝑒(𝑖,𝑗,𝑘) = 𝑝𝑟𝑖𝑐𝑒 𝑜𝑓 𝑆𝐾𝑈 (𝑖, 𝑗, 𝑘)
s.t
∑ ∑ ∑ 𝑅(𝑎,𝑖,𝑗,𝑘) ≤ max _𝑠𝑘𝑢 ∀ 𝑎
𝑘𝑗𝑖
∑ 𝑈(𝑠,𝑎) = 1 ∀ 𝑠
𝑎
𝑈(𝑠,𝑎) + 𝑅(𝑎,𝑖,𝑗,𝑘) ≤ 1 + 𝑦(𝑎,𝑖,𝑗,𝑘,𝑠) ∀ (𝑎, 𝑖, 𝑗, 𝑘, 𝑠)
𝑅(𝑎,𝑖,𝑗,𝑘) ≥ 𝑦(𝑎,𝑖,𝑗,𝑘,𝑠) ∀ (𝑎, 𝑖, 𝑗, 𝑘, 𝑠)
𝑈(𝑠,𝑎) ≥ 𝑦(𝑎,𝑖,𝑗,𝑘,𝑠) ∀ (𝑎, 𝑖, 𝑗, 𝑘, 𝑠)
𝑥(𝑖,𝑎) ≤ ∑ ∑ 𝑅(𝑎,𝑖,𝑗,𝑘) ∀ (𝑖, 𝑎)
𝑘𝑗
𝑐(𝑖,𝑎) = 1 − 𝑥(𝑖,𝑎) ∀ (𝑖, 𝑎)
𝑐(𝑖,𝑎) + 𝑈(𝑠,𝑎) ≤ 1 + 𝑡(𝑖,𝑎,𝑠) ∀ (𝑖, 𝑎, 𝑠)
𝑈(𝑠,𝑎) ≥ 𝑡(𝑖,𝑎,𝑠) ∀ (𝑖, 𝑎, 𝑠)
𝑐(𝑖,𝑎) ≤ 𝑡(𝑖,𝑎,𝑠) ∀ (𝑖, 𝑎, 𝑠)
This model was executed in AMPL using the gurobi solver. A run file with a for loop was used to
run the optimization from 1 to 10 assortments. This was performed for a range of max SKU in
assortment values.
Results
Both the pure revenue and penalized optimization have the greatest percent increase when the
maximum allowable SKUs in assortment is low. In this case the lowest maximum SKU value used was 20
out of the 110 available SKUs to choose from. With a percent increase from 1 to 10 (complete
localization) assortments for the pure revenue and penalized objectives of 6.16% (Figure 1) and 6.05%
(Figure 2) respectively. At 40 SKUs (36.4% of available SKUs) the percent increase for the pure revenue
and penalized objectives is reduced to 3.05% (Figure 1) and 3.14% (Figure 2) respectively. As the number
of assortments increase the percent increase in revenue decreases, which is intuitive. Both the pure
revenue and penalized objective show a large percent increase when going from 1 to 2 assortments,
4.41% (Figure 1) and 4.55% (Figure 2) for 20 SKUs respectively. The increase continues at a slower rate
as the number of assortments go from 2 to 6 assortments (Figures 1 and 2). Past 6 assortments there is
little appreciable increase in the objective function. The pure revenue and penalized objectives capture
97.4% and 96.6% at 6 assortments as the maximum value of the objectives with complete localization at
10 assortments.
10
The SKUs in assortment were different between the pure revenue and penalized objective
models. However the differences were small and had only a small effect on revenue. The greater the
localization (more assortments) the greater the difference was between assortments of the pure
revenue and penalized objective models. This makes logical sense as we would expect there to be a core
group of SKUs that are in high demand in all stores and localized demand would affect a smaller subset
of SKUs. The penalty imposed was relatively small but could be increased if not including brands that
some customers are highly loyal to is considered to be significantly detrimental to the stores overall
business.
The results suggest that a small amount of localization/customization (i.e. going from 1 to 2
assortments) can achieve a significant proportion of the revenue of complete localization. The results
clearly indicate that localization is more important if a small percentage of available SKUs are going to
be offered. Further the customization of SKU offerings is small with the assortments carrying the same
core SKUs. The customization occurs for a small number of SKUs in assortment. While the 382 stores in
the data set were clustered into 10 similar groups it is unclear how much more revenue could be gained
by having unique assortments for every store. It is also unclear how much customization there would
need to be to capture a significant proportion of the revenue gained by complete customization.
Figure 1: Pure Revenue
0.00%
1.00%
2.00%
3.00%
4.00%
5.00%
6.00%
7.00%
1 2 3 4 5 6 7 8 9 10
# of assortments
Percent Increase in Pure Revenue Objective
20 SKU
40 SKU
60 SKU
80 SKU
11
Figure 2: Penalized Objective
Conclusion
This paper clearly demonstrates a methodology for assortment optimization based on localized
demand. First demand must be assessed. We demonstrate an approach where SKUs are considered as a
collection of attributes. The fractional demand for each attribute level and overall demand for the
attribute space can be estimated through an optimization that minimizes absolute difference of
predicted demand and transactional data. Once demand is assessed assortments can be created and
stores assigned to assortments through a second optimization that maximizes revenue but could be
used for profit or other metrics. There are technical challenges to this approach addressed in this paper,
namely nonlinear objective functions and computational time. We showed that a modest amount of
localization can provide significant increases in revenue. The advantage of our approach is that it only
uses transactional data, something all retailers would have available to them.
Future Study
Our approach for demand estimation neglects substitution behavior. That is, if a customers
preferred SKU is not carried, they may be willing to substitute to a different SKU. Our approach assumes
that if the customer does not find their first choice the sale is lost, which may not the best
approximation of consumer behavior. Future models will need to consider substitution behavior.
Our approach for assortment planning requires significant computational time and we were
forced to make simplifications. Further study into reducing computational time is needed. Reduction in
computational time could come from more powerful computers, improved optimization algorithms or a
reformation of the model that is easier to solve. Future models should be capable of going from one
national assortment to complete localization where every store has a unique assortment.
0.00%
1.00%
2.00%
3.00%
4.00%
5.00%
6.00%
7.00%
1 2 3 4 5 6 7 8 9 10
# of assortments
Percent Change in Penalized Objective
20 SKU
40 SKU
60 SKU
12
References
Adhikarla, Swati. “Store Clustering and Assortment Optimization.” University of Cincinnati Capstone
(2015)
Das, Auroshis. “Assortment Planning Strategy for a Retailer.” University of Cincinnati Capstone (2015)
Fisher, Marshall, and Ramnath Vaidyanathan. "A Demand Estimation Procedure for Retail Assortment
Optimization with Results from Implementations." Management Science 60.10 (2014): 2401-
415. Web.
Gaur, Vishal, and Dorothée Honhon. "Assortment Planning and Inventory Decisions Under a Locational
Choice Model." Management Science 52.10 (2006): 1528-543. Web.
Kök, A. Gürhan, and Marshall L. Fisher. "Demand Estimation and Assortment Optimization Under
Substitution: Methodology and Application." Operations Research 55.6 (2007): 1001-021.
Web.
Kök, A. Gürhan, and Yi Xu. "Optimal and Competitive Assortments with Endogenous Pricing Under
Hierarchical Consumer Choice Models." Management Science 57.9 (2011): 1546-563. Web.