question

Linda N avatar image
0 Likes"
Linda N asked Linda N commented

How to hand over a flow item from worker to worker

warehouse-simulation-forum.fsmHi all,

I'm trying to model the activities of a warehouse. In this warehouse, order(batches) are first picked by picker and afterwards handed over to a packer (if the packer has the right skills to process the order). I've tried to model this in process flow, with some links to a 3D model. Pickers pull a pickjob from a list with finished orderbatches. The picking itself I modeled with a delay activity. When playing the model I see at 47 sec that Picker 2 is going to finish picking first with an orderbatch linked to token ID 16. Picker 2 brings the finished tote to the queue FinishedPickjobs and is released.

From this moment on I want a packer (if available) to get the tote from the FinishedPickjobs queue to pick up the order and bring it to one of the process stations. However at this moment something unexpected happens: not the job linked to token ID 16 is acquired by the available Packer but instead token ID 28, which is still in the pick process delay activity.

I want a situation in which Packers only pick up jobs that are actually finished and brought to the FinishedPickjobs queue by packers, but I don't understand what is going wrong. Can someone please have a look and tell me what I did wrong? Thank you in advance!

FlexSim 19.0.0
process flowlistpull from listpush to listworkers
5 |100000

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

Logan Gold avatar image
0 Likes"
Logan Gold answered Linda N commented

The issue is how the tokens in the Tote Creation section of the Process Flow are ordered during the different Push to List activities. This is important because when things are pulled off a list, the default action is to pull the thing that was first pushed onto the list. Here is the list of events:

1. Picker pulls token id:28 off of "List: Pickjobs ready to be picked" and begins the picking part of the WIP section of the Process Flow. This causes token id:28 to go from the "Push to List: Finished Pickjob" activity to the first "Push to List: WIP" activity and be pushed onto "List: Batches in Pick Process".

2. Picker_2 pulls token id:16 off of "List: Pickjobs ready to be picked" and begins the picking process. This causes token id:16 to go to the first "Push to List: WIP" activity and be pushed onto "List: Batches in Pick Process".

3. Picker_2 finishes the "Delay: Picking" activity before Picker and gets to the "Pull from List: WIP, Pickjob finished" activity first. This causes Picker_2 to pull the first token off of "List: Batches in Pick Process". Since token id:28 was the first token pushed onto the list, it is the first token pulled off of the list. This means token id:28 goes to the "Push to List: Waiting For Packer" activity and is pushed onto "List: Batches Ready to be packed".

4. Packer pulls token id:28 off of "List: Batches Ready to be packed" and begins the packing part of the WIP section of the Process Flow.

To fix it, you will want each picking Operator to pull the same token off of "List: Batches in Pick Process" that it initially pulled off of "List: Pickjobs ready to be picked". Fortunately, we have the pickjob label on the picker token to help us with this. You will need to put a query in Query/Object/Array field of the "Pull from List: WIP, Pickjob finished" activity. That query will be:

WHERE Value = Puller.pickjob

This works because the pickjob label on the picker token (Puller) contains a reference to the token it pulled off of "List: Pickjobs ready to be picked" during the "Pull from List: Get Pickjob" activity. The query essentially says we only want to pull a token (Value) off of "List: Batches in Pick Process" that matches the token we first pulled from "List: Pickjobs ready to be picked" and stored in the pickjob label.

· 1
5 |100000

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

Linda N avatar image Linda N commented ·

Thanks both! Both methods have the desired effect. Clear explanation and I learned something new

0 Likes 0 ·
Jordan Johnson avatar image
0 Likes"
Jordan Johnson answered

I think the issue is in the activity Pull from List: WIP, Pickjob finished. In the model you posted, any token on the List: Batches in Pick Process could be pulled, but I think you mean to pull the pickjob. You can pull the pickjob directly by putting this code in the Query/Object/Array field:

token.pickjob

That way, instead of pulling the oldest pickjob off the list, the picker will pull the token for his order batch.

5 |100000

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

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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