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:
- order 1: 2 products in location E, 5 products in location Q
- order 2: 1 in location Z, 20 in location B
- order 3: 1 in location Y, 1 in location N
- order 4: 3 in location B
- order 5: 1 in location A, 10 in location E
- order 6: 1 in location A, 1 in location B, 5 in location Q
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:
- order 1: 2 products in location E, 5 products in location Q
- order 6: 1 in location A, 1 in location B, 5 in location Q
- order 2: 1 in location Z, 20 in location B
- order 4: 3 in location B
- order 3: 1 in location Y, 1 in location N
- order 5: 1 in location A, 10 in location E
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:
- Picker grabs a cart with 16 buckets on it
- Picker scans the 16 unique bar codes from the buckets onto a webpage via a PDA(with scanner and wifi) and a 'picking ticket' is created
- The products are ordered by location (the picker only walks by any product once)
- The special webpage then tells the employee which product and how many to grab and they scan the bar code on the product
- Then it says which bucket to place the product in and they they scan the bar code on the bucket they are putting the product in
- After all the products are picked, Picker goes to the shipping station and scans in one of the buckets into a VB program (yes, eww I know. Someday that will get converted)
- Receipts are printed for all the orders in that 'picking ticket' and are placed into the correct bucket
- Each bucket is emptied and packaged up
- Picker now shipper places packaged order on a scale and scans the bar code on the receipt into a program.
- The correct postage is printed automatically and the order is marked as shipped and the customer is sent an email with tracking information
- Shipper puts postage label on the page, seals it up and puts it in the pile of finished packages
- At the end of the day, USPS and UPS pick up the shipments.
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.