These materials are provided by
the
Supply Chain &
Logistics Institute at the Georgia Institute of Technology. You
are welcome to use them so long as the copyrights remain intact,
credit for authorship is acknowledged, and nothing is resold at
profit.
Affinity Analyzer
A tool for identifying skus that are ordered together
If your customers generally order an oil filter gasket when they
order an oil filter, then you may be able to reduce travel in your
warehouse by storing the filter and the gasket close to each other.
This program identifies such opportunities.
You can search for such opportunities by preparing an order history
that combines the shopping lists of recent customers and loading it
into this program, which will read the orders, search for patterns,
and report highly correlated skus. In addition, it will identify
skus that tend to complete orders.
Run it from here!
Please read
the license
and disclaimers, then click to launch the latest version via Java
Webstart:
Recent changes to the Java security model and to the Georgia Tech server require you to give explicit permission to run programs from the Georgia Tech site. Here is how to do that:
This needs to be done only once: On PCs, open the Control Pane; on Macs, open System Preferences. Then, on either Mac or PC, select the Java Control Panel and click on the Security tab. and then on the button “Edit Site List”. Finally, add http://www2.isye.gatech.edu to the exception site list.
In addition, if you use a Mac, you will have to do the following each time you use the program: Go to System Preferences and select Security. Change the setting “Allow apps downloaded from:” to “Anywhere”. (Be sure to change it back after running the program.)
This works with all browsers except Internet Explorer, so you will have to use an alternative such as Firefox, Chrome, or Safari. And should the program not automatically start, locate the jnlp file in your Downloads folder and open it with Java Webstart.
(Some company firewalls may still prevent Java webstart programs from running, in which case see your system administrator.)
If you are running the program for the first time, Java Webstart
will download 1 program file totaling about 0.1MB. The next time you
run the program Java Webstart will check for and download any
upgrades before starting the program. If there have been no
upgrades, the application will start immediately.
Need Java?
This program is written in Java so it runs on any brand computer and
any operating system. If you do not already have Java installed, get
the latest version of the Java Runtime Environment
(JRE) here.
How to use the program
- Prepare an order history that lists all pick-lines, sorted by
customer order. This should be a tab-delimited text file, with the
order ID in the first field and the SKU in the second. (Here is
an example.)
- Start the Affinity Analyzer program and open the the order
history file. The program will parse the file and analyze the
patterns of customer orders.
- Examine the statistics to find SKUs that have been ordered
together.
Tips
- When examining a table of results, you can sort the table on any
column by clicking on the header of that column. If the field is
SKU ID, the sort will be alphanumeric; if the field displays a
count, the sort will be numerical. If there are tens of thousands
of entries in the table, it may take a perceptible amount of time,
generally seconds, to sort and redisplay the table.
- Look for skus that are popular AND tend to complete orders. You
may want to store these separately if they can be picked directly
into shipping containers, bypassing checking and packing. For
example, in the sample data, SKU 1953323 was among the most popular,
ranking within the top 3 percent among all SKUs; and each time it
was ordered, it was ordered alone.
- A pair of skus that is popular and tends to complete orders can,
if stored together, effectively change a 2-line order to a
single-line order, with consequent savings in travel and/or material
handling.
- In general, storing skus together that are frequently ordered
together can reduce the effort to marry them, whether this effort is
measured in travel or conveyor capacity, or something else.
You can find more information and tools like this in our textbook,
Warehouse
& Distribution Science and associated web
page www.warehouse-science.com.
FAQ
- Why does the program not look for groups of 3 or 4 or more skus
that are frequently ordered together?
- This is impractical and unnecessary. It is impractical because
the time to process the sales history and the space to store the
results both increase exponentially in the size of the affinity
groups. It is unnecessary because, if a group of, say, 4 skus are
frequently ordered together, this will be recognized by the current
pairs analysis, which will report 6 pairs frequently ordered
together.
- Why do I get an out-of-memory error?
- If your order history contains fifty thousand SKUs then the
program must tabulate statistics on about (50 000)(50 000) = 2 500
000 000 different pairs of SKUs, which can overflow memory. But the
program can take advantage of as much memory as you have available
so quit other applications or move to a machine with more
memory. Addendum: Some versions of MS Windows apparently allocate no more than 1GB of memory to any Java process. This does not seem to be the case for Mac or Linux.
- Why is the program taking so long to run?
- Your computer does not have enough memory--see the previous
question--and is continually swapping the contents of memory to disk
(also known as “thrashing”). You must add more memory
to your computer or use another computer that has more memory or
truncate the data file (for example, use only the first 10 000
lines). For comparison, my laptop with 3GB RAM takes less than 1
minute to process 200 000 lines of sales history describing 10 000
SKUs.
- Why didn't you implement this using VB within MS Excel?
- Because embedded macros in MS Office products are a rich source
of viruses; because macros in MS Office can be excruciatingly
slow; because MS Excel costs money and does not run on Linux and
so some people do not have it.
View this
page in Romanian courtesy of
azoft