I am trying to optimize how orders are filled at my work. Right now, an employee just grabs the latest 16 orders(sometimes 14 or 18) and fills them.
I am trying to change it so that instead of simply going by the latest list of orders, that it orders them so each batch has order in similar locations. But I can't figure out how I should go about sorting the list. Below is a simplified example of what I want to do.
Example Order List:
After sorting the list, I want order 2 and 4 next to each other, 1 and 6 next to each other, etc. Something like this:
I am using PHP, but any examples or hints in any language would be greatly helpfully.
Edit:
Let me try to explain this in better detail. Employees grab batches of orders and they they go fill the orders using a PDA with a barcode scanner. Our warehouse is set up so that location A is first, B is next and so on. There is no backtracking involved at all. Generally, they have to walk the whole warehouse to fill the batch of orders because on average, the 16 orders will have products from all of the locations.
If I change the sorting of which orders are being filled next from the date of the order to the location of the products of the order, then a batch of orders might only have locations A-G and wont have to walk the whole warehouse.
Another Edit(I really need to get better at posting good details)
Here is our current process:
I should also note, that a lot/most of our products are small and a 16 order 'picking ticket' can have 500-800 individual pieces. Right now, we have about 28,000 different products in stock.
As I wrote in the comments on the question, I think you're just looking at the problem the wrong way.
Your description implies that they can go to all the locations before they have to "build"/finish the orders. The problem is that right now, things are grouped in terms of orders, so they try to fill Order #1 by going to all the locations that it requires, then they start looking at Order #2, etc.
Instead, you need to give them aggregated information in terms of the locations, and what they need to pick up at each one. Then they just go to all of the locations, in any order, and pick up everything they need from each one. When they've been to all locations, they go through the list and fill the orders from their big pile of stuff.
Let me know if I've made some incorrect assumptions here, and I'll try to come up with a different approach.
Just to try and clear up the difference, here's the employee's motion in each method (the first two are not definite, because they could have gone to locations in different orders, I just followed the exact order you listed in, as an employee probably would).
Original sort by date (12 moves):
E > Q > Z > B > Y > N > B > A > E > A > B > Q
Your re-sorted version (10 moves):
E > Q > A > B > Z > B > Y > N > A > E
By aggregating by location (7 moves):
A > B > E > N > Q > Y > Z
To further stress the difference, if I assume that all your locations are equidistant from the previous one (so moving from A to B has a cost of 1), and that you have one for each letter. Also assuming that you both want to start and end at location 0, you have:
Original sort by date: amount of movement = 138
Your re-sorted version: amount of movement = 138 (that's kind of surprising)
By aggregating by location: amount of movement = 52
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With