Warehouses made hyper-fast

Have you ever wondered why your online purchase arrives in just a day or even a few hours? I contributed to making that possible. I worked for a worldwide market leader in intralogistics that equips the largest warehouses with software and hardware. They tasked me with rebuilding the software component that manages storage locations within high-rack storage systems.

The status quo was a component that was difficult to adapt for different use cases, buggy, and frequently failed to meet speed requirements. The company had tolerated these deficiencies for years but was determined to resolve them.

This software component was responsible for identifying storage locations inside storage racks where Automated Storage and Retrieval Machines (ASRMs) would ultimately place boxes and pallets (load units). The high-level requirements were clear:

Store load units space- and speed-efficiently inside a storage rack.

This directive, however, leaves critical questions unanswered:

To understand the solution, let's first define the key domain entities and their relationships.

An ASRM is a robot that executes orders from a server application. The server instructs the ASRM to load one or more load units at a source location and unload them at a destination. It moves within an aisle, typically flanked on both sides by storage racks. It is the machine shown in the center of the image.

A storage rack is a metal structure with pillars and horizontal bars that divide the rack into numerous compartments. Each compartment can store one or more load units. The ASRM can load and unload from these compartments in random order, much like a computer's access to RAM memory locations. These compartments are visible on the left and right sides of the ASRM in the image.

Let's examine the problem in more detail.

How the storage system is used

Every warehouse manages a flow of incoming goods. These goods are stored until needed for commissioning—the process of collecting and sorting items to fulfill customer orders.

The ultimate goal of an efficient warehouse is rapid goods retrieval, ensuring consumers receive their orders quickly.

The closer a good is to the storage system's outlet, the faster the ASRM can retrieve it. Therefore, the initial strategy is to store load units as close to the outlet as possible. The challenge arises as the storage system fills up; an empty warehouse is a financial drain, so each new load unit must be stored progressively farther from the outlet.

For cost efficiency, storage racks that can hold multiple load units deep are common. When a load unit is blocked by another in front, the ASRM must first rearrange the blocking unit before retrieving the one behind. This creates a Last-In, First-Out (LIFO) system by design, although in warehousing, goods are rarely stored indefinitely; the goal is rapid turnover.

Rearrangements consume significant time and delay the retrieval of goods needed to fulfill customer orders. While eliminating rearrangements is ideal, it is not possible. We minimize them by storing goods that are likely needed together in the same compartments. The definition of "needed at the same time" is specific to each warehouse's processes and inventory, but we will accept that as a given parameter.

ASRMs are typically equipped with the same number of load unit places as a compartment can hold. By storing goods needed together in the same compartment, we gain an additional speed advantage by transporting them simultaneously.

The two criteria—storing same goods together and storing close to the outlet—raise a question of priority when both options are available.

Consider this scenario: we need to store a box of good A. There is one empty compartment and one compartment containing a load unit of good A. The empty compartment is closer to the outlet. Filling the compartment with good A is preferable, as a future rearrangement is far more costly than the slightly longer travel distance for this specific good.

From this, we can derive a prioritized list of search criteria:

Store load units that are likely needed at the same time in the same compartment.
If no such compartment exists, store the load unit in an empty compartment.
If no empty compartment exists, store the load unit in a used compartment that does not contain the same good.
If multiple storage locations satisfy the same criteria, choose the one closer to the outlet. Proximity to the outlet is a secondary optimization criterion.

Criterion 3 harms the tidiness of the storage system, as it will likely cause a future rearrangement. The search algorithm should be parameterized to ensure this case is infrequent.

This criteria list is typically optimal even when the ASRM can store multiple load units simultaneously from the inlet. Unloading all of them into a single empty compartment provides a marginal increase in storage speed but can lead to many compartments containing mixed goods. This outcome, however, is highly dependent on the goods-in process and the order in which goods arrive at the inlet.

Characteristics

Glossary

Back