What does it mean "Optimizing the storage locations" and why do it at all?
Well, a typical warehouse will have 10-100 or more Picks (Goods-Out) per item than Goods-In. So, to reduce the effort involved in finding, selecting and moving the goods, it's far more effective to reduce the Goods-Out effort than the Goods-In effort.
Which result does the user wish to achieve?
- Enough pickable stock for a month in the A zone (on the floor and close to a pick station)
- A backup palette for the pick item in the B zone close to its A zone location
- Stock not often required in the C zone.
Why? Well, he'll want to reduce the internal transports he needs to do daily.
Let's call this the Problem Domain.
How do we plan to implement this?
- decide what "reach" level per pick-location he'll wish to achieve eg. enough stock for a month
- generate a list of goods-in items in the consignment note
- new items first - new=those not in stock
- then those by expected reach, lowest first - "reach"=stock/picks per day
- then find free "pickable" bin locations (A Zone) - sort by closest to pick-stations
- assign bin-location found to Goods-In item and number of pieces
- find a "fill-up" location (B Zone) for the rest of the item
- those Goods-In items left go into the the backup locations (C Zone).
Let's call this the Process Model.
In a palette store, pick locations - the A zone - will usually be on the floor and perhaps on the first level of the storage rack. The storage rack levels 2 and 3 reachable with a standard fork lift truck will be the B zone, all others in the C zone.
To implement the required logic in a software system, I start off with the result the user wishes to achieve. Then the information he has at the start of the process - in this case
- the consignment note
- the available bin locations per zone
- the number of pick movements last month per Goods-In item
- a set of parameters and constants to control the process.
Let's call this the Data Model.
We now have enough to start the rest of the design. In a software development environment we create the data base tables for the Data Model.
Then we create Data Views in the form of Forms (Fields, Buttons, Grids..) and Lists (on screen) to show the user the interface he will get. In a 4GL Programming Language like Visual Foxpro (VFP) this was done in the VFP environment with Drag-and-Drop and took a day or less. In Java, PHP or .NET it takes me at least 3 days.
The View Model we iterated with the user until he was satisfied with the result.
The last step in the development process was the implementation of the Process Model in software programming code.