question

hikel avatar image
0 Likes"
hikel asked hikel commented

Split Order pick between drivers


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

FlexSim 24.2.2
processs floworder pickingsplit
1743105579240.png (70.5 KiB)
shiftpick1.fsm (154.0 KiB)
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

1 Answer

Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered hikel commented

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.


1743158484850.png (28.2 KiB)
1743158492677.png (19.1 KiB)
· 8
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

hikel avatar image hikel commented ·

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 0 ·
shiftpick2.fsm (155.8 KiB)
Felix Möhlmann avatar image Felix Möhlmann hikel commented ·

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 0 ·
shiftpick2-1.fsm (156.8 KiB)
hikel avatar image hikel Felix Möhlmann commented ·

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 0 ·
Show more comments