Travel is the greatest source of wasted labor in a typical warehouse. This tool computes the shortest path required to visit an arbitrary set of storage locations.
This program computes and displays the shortest path necessary to retrieve all the SKUs requested by a customer. This enables you to:
Figure 1: Shortest pick-path visiting the required (red) storage locations. In this example, all paths start at the upper left and finish at the lower right.
This is a Java program and so should run on every type of machine and operating system. However, you will need to have installed Java (which is free).
If you draw the layout of a warehouse in an MS Excel spreadsheet and label the storage locations, this program will:
The following needs to be done only once.
xlsxformat. In this map, each section (bay) of shelf should be represented by a cell of the spreadsheet. Each such cell should include a text string giving the unique address of that section.
A:to indicate Aisle space (note colon immediately following the “A”).
<cell width>;, <cell length>;given in whatever coordinates you prefer (but you must be consistent). All space marked as aisle must include these dimensions.
D(separated by commas). If any space marked as aisle also includes one of these indicators, picking in forbidden in that direction (Left, Right, Up, or Down) from the cell. Note: Each storage location should be pickable from only a single direction.
A:3,2;D,Lindicates that the cell containing this string is aisle space that is 3 units wide, 2 units tall, and it is impossible to pick from any storage space that may be immediately below (
D= “Down”) or immediately to the left (
STARTinto one cell and
ENDinto another to indicate the common start and endpoints of all trips by order pickers. These must be different cells, but they can be adjacent. They should not include any of
csvformat that lists the addresses of all storage locations visited by each order or batch. (Quantity picked is not relevant for pick-path optimization.) All the addresses of each order/batch should be listed consecutively, with each new address on a new row. Each row should contain exactly two values, the unique id of the order/batch and the address of a storage location. Do not use a header.
If the program does not run, make sure you have the latest version of Java installed and your security settings allow execution of Java programs.
Open warehouse description. The program will display an image of the warehouse (or an error message if the warehouse description contains internal inconsistencies).
Open batch order file. The program will pop up a menu that offers two choices:
Here are some sample files that illustrate how to prepare your inputs.
The program relies on the Lin-Kernighan heuristic, which begins with a solution and then searches for small changes that will improve it. Strictly speaking, this can get stuck in a local optimum and so fail to find the shortest path. We reduce the chance of this happening by extending the search and by running the algorithm multiple times. You can control both of these by clicking on the menu
Optimize path and then increasing the number of tries and/or number of iterations per try. Values that are too small increase the chance of a local optimum; values that are too large waste time and cpu cycles. The current values seem sufficient for most warehouses so you should probably not change current settings unless you are convinced that it is producing sub-optimal travel paths.
(We did not use the optimum-finding algorithm of Ratliff and Rosenthal, Operations Research 31(3):pp 507–521, 1983, because of the complexity of programming for warehouses with cross aisles.)
A:3,2then all cells in row E in your warehouse must have vertical dimension of 2 and all cells in column 17 must have horizontal dimension of 3.
A:3,2;Rwhen the cell to the immediate right is not a storage location. (I will improve error messages in the future.)
Figure 2: The most-frequently-visited storage locations
No worries, as long as there is a path by which a worker could travel between any pair of storage locations.
Yes, you can use any spreadsheet program that can read and write files in MS Excel
Did you forget to prepare it in
The program attempts to improve any solution by making random perturbations. If you do not specify the same initial random seed, two different runs might produce two different results. However, this should happen only occasionally and the differences should be small.
You can prepare and load a configuration file to change any or all of the following:
// Choose to match your preferences: screen_width 1000 screen_height 700 // How the warehouse map will be displayed: order_color 150 150 60 100 shelf_color 100 100 70 100 text_color 40 0 100 23 text_size 12 // Labels for aisles: aisle_identifier A block_left_identifier L block_right_identifier R block_top_identifier U block_bottom_identifier D start_identifier START end_identifier END // Controls for the heuristic: iterations 3000 runs 5
Possibly. Send me a description of what you have in mind. If it seems generally useful it will be added to the to-do list.
Bugs are dealt with quickly. Otherwise, the software is updated about once a year.
You have oriented the drawing so that spreadsheet rows are taller than columns. You should orient your drawing so that longer distances run horizontally.
Figure 3: When drawing your warehouse, choose an orientation that does not squeeze addresses like this.
Figure 4: The warehouse layout can include cross-aisles or islands, but you must specify no more than a single direction (left, right, up, down) from which to access each storage area.