Batch picking optimization script in order-fulfillment module increases pick rate by 18% in high-volume DC (masc-2023.1)

I wanted to share our implementation of a batch picking optimization script that significantly improved our order fulfillment efficiency. We were experiencing inefficient batch creation where the system would group orders without considering picker travel distance or SKU proximity. Our pick rates were around 85 units per hour, and we knew we could do better.

The core issue was that standard batch creation logic focused purely on order priority and cutoff times, ignoring the physical warehouse layout. Pickers were zigzagging across zones, and we’d often have multiple pickers in the same aisle competing for space. We implemented a custom script in MASC 2023.1 that hooks into the batch creation event and applies three optimization rules: SKU proximity analysis to group items from nearby locations, zone-based workload balancing to distribute pickers evenly, and picker skill matching for specialized items. After two months of running this optimization, our pick rates improved to 142 units per hour - a 67% increase. Order accuracy also improved by 12% since pickers aren’t rushing between distant locations.

Did you need to modify the picker assignment logic as well, or does the optimized batch structure naturally guide pickers to the right zones? We’ve found that even with good batches, if picker assignment isn’t coordinated, we still get zone congestion during peak periods.

How does your script handle the batch creation event integration? Does it run synchronously during batch creation or asynchronously afterward to reorganize batches? I’m concerned about performance impact if we’re doing complex calculations during the critical path of order processing.

We use the location master coordinates - specifically the aisle, bay, and level attributes. The script calculates a proximity score by comparing these coordinates between SKUs in pending orders. Items in the same aisle get the highest score, adjacent aisles get medium score, and different zones get low score. We also factor in picker capacity - a batch won’t exceed 25 picks or 2 zones to keep it manageable. The zone-based balancing tracks active batches per zone in real-time and avoids creating new batches in congested areas until they clear.

This is impressive! We’re struggling with similar batch picking inefficiencies in our multi-zone warehouse. Can you share more details about how you calculate SKU proximity? Are you using the actual aisle/bay coordinates from the location master, or is there a simpler approach that still gives good results?