Managing Forklift Handover Between Shifts

Managing Forklift Handover Between Shifts

hicham_elbaz6949F
Advocate Advocate
176 Views
15 Replies
Message 1 of 16

Managing Forklift Handover Between Shifts

hicham_elbaz6949F
Advocate
Advocate

[ FlexSim 24.2.2 ]

I am working with a model that has two shifts, and the number of forklifts available in each shift is different.

I initially set up the forklifts using the Delete/Add option in the parameter table for each shift. This works fine, but my main issue is that forklifts from the first shift need to hand over to the second shift, and currently. I have seen some post doing double connect (A) to dispatcher but this approach didn't work for me

1740496494861.png

I was considering using a single set of forklifts and managing their availability through downtime in a timetable. However, the challenge with this approach is that the number of forklifts needed per shift is not the same, so I am not sure how to manage that effectively. is there an easy way since i will not have to do hand over just changing number of forklifts between shifts?

Is there a way to handle this forklift handover while maintaining different numbers of forklifts for each shift? Any guidance or suggestions would be greatly appreciated! here is model loading_1.fsm @Felix Möhlmann do you have any suggestion about this problem. Thank you!

0 Likes
Accepted solutions (1)
177 Views
15 Replies
Replies (15)
Message 2 of 16

moehlmann_fe
Explorer
Explorer
Accepted solution

I would suggest to do what would likely happen in reality as well: Let them finish their current task before they stop working.

capture1.png

0 Likes
Message 3 of 16

hicham_elbaz6949F
Advocate
Advocate

Thank you @Felix Möhlmann that's works only problem is when shift change I will have a lot of forklift in the warehouse since a lot of forklift are still picking so I will have twice the number of forklift which is not the case. do you have any solution to this problem? loading_1.fsm

0 Likes
Message 4 of 16

moehlmann_fe
Explorer
Explorer
Maybe just end one shift a bit earlier and/or start the next one later, so there's a time window where technically no forklifts are active and the current shift has time to clear out.
0 Likes
Message 5 of 16

hicham_elbaz6949F
Advocate
Advocate

@Felix Möhlmann I will try this option as I have some picks that takes hours. just a follow up i notice the forklift for 2 shift is being acquired which it shouldn't be since these are for 2 shift. normally it should aqcuire only available shift 1 forklifts. do you have any suggestion for this one?

1740589421350.png

0 Likes
Message 6 of 16

hicham_elbaz6949F
Advocate
Advocate
@Felix Möhlmann what do you think of this approach using process flow for shifts is there any way around. link
0 Likes
Message 7 of 16

moehlmann_fe
Explorer
Explorer
Certainly a Process Flow can be used to manage shifts. But first you should be clear what exactly you want to happen when a forklift is busy picking items and its shift ends.
0 Likes
Message 8 of 16

hicham_elbaz6949F
Advocate
Advocate

@Felix Möhlmann

Normally, when a shift ends, it should be handed over to the second shift forklift drivers.

  1. If the second shift has fewer drivers than the first shift, picking should continue with the available second shift drivers. Any extra forklifts will wait until one of the second shift drivers becomes available.
  2. If the number of drivers remains the same, it's just a delay no formal handover is needed. that's the model initially did
  3. If the second shift has more drivers than the first shift, they will continue picking as usual, with the additional forklifts joining in picking new picks

The next pick should always resume from the unfinished task left by the first shift, rather than starting a new one. what is the best approach to this?

0 Likes
Message 9 of 16

moehlmann_fe
Explorer
Explorer

I think I would just model the drivers as a separate resource. Each order token first needs to acquire a driver (can be a numeric resource, but binding it to operators makes building the other logic somewhat easier).

The time table would do two things:

- Set a label on the driver, so that an active order token can check after each pick if the driver's shift has ended. If so, the forklift is send to the default/home/reset location, the old driver is released and a new one is acquired (possibly with a higher priority than 'fresh' order tokens).

- The down function would also create a token that acquires the respective driver with a high priority and keeps it occupied until the down time ends.

Here's a model that demonstrates the concept.

driver-shifts.fsm

0 Likes
Message 10 of 16

hicham_elbaz6949F
Advocate
Advocate

Thank you @Felix Möhlmann that really helpful. I used your concept same way. Looks it is working fine. I just have one question about second condition you did in decide activity "Group("PickQueues").indexOf(token.Queue) < Group("PickQueues").length" I didn't get the purpose of it. here is the model Shift-pick.fsm I didn't use second condition on it.

Another question this is a general one: I like the way you tackle the problems in simulation. Is there any resources you suggest to follow or links or books to help me on that 🙂

0 Likes
Message 11 of 16

moehlmann_fe
Explorer
Explorer

I use that condition to determine whether the current location is the last pick. In my model this is just done by checking whether the queue the forklift loaded from is the last one in the "PickQueues" group. In that case, I do not have the forklift travel back and get a new driver since that is the next action anyway.

You make the check after travelling to the pallet but before loading the items, so this wouldn't make as much sense in your case.

The equivalent in your model would be to check if there are still list entries in the parent tokens partition (meaning this is not the last pallet).

shift-pick_1.fsm

I don't really have any direct resources/books to recommend. In my case it's a couple years of experience with the software and learning what's possible and how to tackle problems along the way.

Looking through the forum and asking questions is already a good way of finding/learning useful techniques. Another thing I would recommend (if you are inclined to writing your own code), is looking up the various flexscript classes and their methods, so you get an idea of what is possible to do in code. Not all at once, but the parts relevant to what you are building. For example, if you want to build a conveyor system and need more customization than the DP/PE trigger options allow, then look at the classes related to conveyors.

https://docs.flexsim.com/en/25.0/Reference/CodingInFlexSim/FlexScriptAPIReference/FlexScriptClassRef...

0 Likes
Message 12 of 16

hicham_elbaz6949F
Advocate
Advocate
Thank you @Felix Möhlmann for the great support and tips! I will definitely do that!
0 Likes
Message 13 of 16

hicham_elbaz6949F
Advocate
Advocate

Hello @Felix Möhlmann, I just wanna folllow up with for a problem I am facing in this model. when the shift end I notice that drivers will not be acquired as they being acquired for next order as you can see in the first screen

1741706389375.png

as I solution I did switch first acquire made forklift first need to be available then drivers this solved the problem but second acquire for driver when shift change show driver as string

1741706567099.png

1741706610916.png

1741706711812.png

is there a way to solve this problem. here is the modelshift-pick-1 (2).fsm

0 Likes
Message 14 of 16

moehlmann_fe
Explorer
Explorer

The token acquired a new driver before the old was released. Thus the label became an array but the Decide activity expects a single pointer value.

Putting a Custom Code activity with the following code snippet after the Join activity should fix this.

token.Driver = token.Driver[1];
0 Likes
Message 15 of 16

hicham_elbaz6949F
Advocate
Advocate
Thank you @Felix Möhlmann! that solved the problem
0 Likes
Message 16 of 16

hicham_elbaz6949F
Advocate
Advocate

@Felix Möhlmann and wait for event placing it before acquire did solve the problem as well! Thank you!

0 Likes