This is the temporary parking place for warehouselayout.org.

IMHRC 2014 Code Development

Late last year I wanted to develop a simulation model of a picking warehouse. In preparation, I needed a way to generate some random pick lists base on a given warehouse layout/configuration. I talked to a few of my colleagues about getting some “starter code” to do this and was surprised to find that there wasn’t really much available. The best answer I got was “we modeled the pick locations as a graph and the picker/vehicle travel using paths through the graph.” My response: “Excellent. Send me the data structures, file read/write code, and any shortest path code based on the data structures that you have.” A response of “sheepish silence” may be a bit of an overstatement, but it was clear that the code and corresponding data structure specifications were not readily available in any usable format. Yet, the data models and code I was requesting should be fairly standard and widely available – it’s not like I was asking for proprietary picker-routing, order batching, or WMS code.

With no standards or even de facto standards, I began to develop the specifications, data structures, and code myself. This has been an arduous task that has very little relationship to the actual modeling and research that I wish to use the code perform. Further, this exact same thing has to have been done by hundreds (thousands?) of researchers over the years as a precursor to their research/testing. Yet we still seem to have no standard data models and associated software tools to represent warehouse configurations and operations. Why?

My IMHRC 2014 contribution is a start to an open source code repository so that, perhaps this will be the last time someone has to start from scratch :-).

Note that the code posted here is "work in progress" and will frequently updated. If you'd like to contribute, drop me an email and I'll be happy to set you up an account.


The schema for the main database. The goal is to have a "starting point" with some sample code -- not a full-blown WMS.

create_tables.txt - SQL commands to create the database tables (created using myslqdump with the "--opt" and "--no-data" options)4.38 KB
picksystem.mwb - MySQL Workbench project file with the schema, diagrams, etc.11.68 KB

Create a 2-by-1 layout in Perl

The attached perl code creates the picker graph for a 2-by-1 layout. The general configuration is as shown below:

create2by1.txt - Perl Script to create the graph.7.48 KB

Perl script to generate random SKU and Order data

The script generates random sku, order, and line_item records.

generate_skus_and_orders.txt - Perl script for generating random SKU and Order records.3.32 KB

Python script for solving the SKU slotting problem

The script uses the Gurobi solver (you must have the solve installed in order for the script to work) to assign slots to SKUs. The model is a simple linear assignment formulation where the costs are determined by multiplying the SKU quantities from the line items table by the distance from the slots' associated picker node to the origin.

coi_slotting.txt - Python script3.65 KB

ROI Tool

The live version of the ROI tool is here ... http://www.mhi.org/as-rs/roi/


WebASRS is a project involving the development of a web-based unit-load picking configuration tool. The work was partially funded by the AS/RS Fixed Aisle Working Group of MHIA.

The site has temporarily been taken down in order to move it to another hosting site. It will be back up soon and the address will be listed here.

Related Publications: