Split Order pick between drivers

Split Order pick between drivers

hicham_elbaz6949F
Advocate Advocate
21 Views
9 Replies
Message 1 of 10

Split Order pick between drivers

hicham_elbaz6949F
Advocate
Advocate

[ FlexSim 24.2.2 ]


I would like to split the token.OrderPicks between drivers as this is label represent Aisle within the warehouse split going to be based when you have 10 aisle picks for example and 3 drivers the first two drivers get 3 aisle each remaining get 4 and when it is equal split it equally @Felix Möhlmann do you have any suggestion for this one I tried batch activity and push to list but I didn't manage to solve it

1743105579240.png


shiftpick1.fsm

0 Likes
Accepted solutions (1)
22 Views
9 Replies
Replies (9)
Message 2 of 10

moehlmann_fe
Observer
Observer
Accepted solution

You would need to alter the code in the Custom Code activity marked below. It currently creates the "OrderedPicks" array where the first 'layer' is split by aisle and contains the picks in that aisle. Instead you would add an additional layer to the array that splits the order into subtasks for one forklift each.

1743158484850.png

1743158492677.png

The token would then create child tokens in a Run Sub Flow activity equal to the number of entries in the array. Each of those would get assigned one entry from the array as their own "OrderedPicks" array, pull a Forklift and then run through the logic as before.

the big question is really by what rule to split up the tasks. Since you don't know how many forklifts will actually be available it doesn't make much sense to use a fixed number of subtasks. I think I would either split them completely by aisle and when a forklift is done with one aisle it becomes available to be pulled by a different token belonging to the same order before returning to drop off the pallet. Or you split by 'capacity', meaning after a fixed number of picked up items.

Another change that will be necessary is to create as many empty pallets are there are subtasks. Currently one empty pallet is created per order right at the start of the run. This would need happen after the actual number of subtasks in the order is known.

0 Likes
Message 3 of 10

hicham_elbaz6949F
Advocate
Advocate

Thank you for @Felix Möhlmann for suggestion I did add another layer by changing the custom code (subflow is the run per order then I have existing run per Aisle) not sure if I done it correctly. here is model shiftpick2.fsm


yes number of forklift is not fix as I want to use different number in experiment for the split for order it is possible to split by aisle when I have 10 aisle order with 3 forklift 3 aisle for first forklift and remaining which 4 to forklift number 3 (in order aisle 1 to 3 to forklift 1......)


If it is not feasible I can just use what you did suggested "split them completely by aisle and when a forklift is done with one aisle it becomes available to be pulled by a different token belonging to the same order before returning to drop off the pallet"


for empty pallets I am assuming it is always available is not gonna be a problem for that

0 Likes
Message 4 of 10

moehlmann_fe
Observer
Observer

Your code seems to be correctly splitting the aisles into separate groups. You can of course then group the resulting aisles into N arrays, where N is the number of forklifts in the simulation run. I just think it wouldn't make sense to do so regardless of the number of involved aisles. When there's an order with items from 10 aisles and a second order with items from 3, I don't believe splitting the second one across three forklifts would be very efficient.

But at the same time, my idea of keeping one token per aisle and letting them pull forklifts that are busy with the same order would lead to them leapfrogging each other (forklift1 doing aisles 1, 4 and 7 for example).

I think it might be best to define a threshold that defines at what number of aisles per order to split.

shiftpick2_1.fsm

0 Likes
Message 5 of 10

hicham_elbaz6949F
Advocate
Advocate

Thank you @Felix Möhlmann for your suggestion and input I think I will go with doing it by Aisle for now as this is the close one to reality. Just in case I decide to do as you mentioned "threshold that defines at what number of aisles per order to split" do you have an example to follow?

0 Likes
Message 6 of 10

moehlmann_fe
Observer
Observer
That's already implemented in the model I uploaded. It splits the orders into groups of 2 aisles max.
0 Likes
Message 7 of 10

hicham_elbaz6949F
Advocate
Advocate
Thank you @Felix Möhlmann my fault I didn't check the parameter table!
0 Likes
Message 8 of 10

hicham_elbaz6949F
Advocate
Advocate

Hello @Felix Möhlmann I have a follow up question for the same model I notice one thing when unloading the pallet the label which is creating a problem when I try to batch all pallets then move all part into one pallet then "destroy pallets" that being used to pick each order.


last item in boxe label is assigned /transposrter/box1 not like other Queue2/Pallet/box1. I was trying to solve this problem do you any solution to this problem? Thank you! here is model shiftpick2-1 (2).fsm1744141504269.png

1744142129799.png

0 Likes
Message 9 of 10

moehlmann_fe
Observer
Observer

After one forklift starts a load task but before it finishes, another item is created and thus added at the front of the array. In the Move Object activity that new item then gets falsely moved to the pallet while the loaded one remains in the forklift.

You need to give the subflow tokens their own label to have a fixed reference to 'their' item.

capture1.png

shiftpick2-1-3.fsm

0 Likes
Message 10 of 10

hicham_elbaz6949F
Advocate
Advocate

Thank you @Felix Möhlmann it did work well! I added a finish block when unloading the pallets where I batch all order into one pallet then detroy pallet used for pick at the beginning. it did work well I was just wondering if you have a better approach to do that if not i can use mine. here is model shiftpick2-1-4.fsm

1744651974610.png

1744651957654.png

0 Likes