question

Ruben Mariduena avatar image
1 Like"
Ruben Mariduena asked Jason Lightfoot commented

How to create activity sequences based on availability rather than a set order?

Please see graph attached (non-sequential-inspections.png). I'm trying to create an inspection process in Process Flow where instead of having a set order for the inspections (A then B then C), the inspections are completed based the availability of the specialized workers. There are 3 inspections that need to be completed on each of the pieces but they are not dependent of each other, meaning the can be done in any order. While inspection A is being done on piece 1, Inspection B can be done on piece 2 without piece 2 having had inspection A done on it yet. Inspection B can go back to piece 1 once its free and inspections A can go to piece 3 if piece 2 is busy with inspection C. The reason for this is that workers are not waiting on each other to perform their specific inspections on pieces and can streamline the process. Is this possible?

FlexSim 18.0.3
process flowsequences
5 |100000

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

Cliff King avatar image
1 Like"
Cliff King answered Jason Lightfoot commented

I used a process flow list representing each of the flow items to be inspected and the remaining inspections required on each one ("InspA", "InspB" and "InspC"). As inspections are performed, I reset the corresonding label on the item to 0.

I used a General ProcessFlow to represent the items needing inspection, and a Task Executer ProcessFlow to represent the tasks of an inspector that I attached (i.e. instantiated) to each of the five operators in the 3D model.

As an operator finishes the tasks associated with inspecting a single item, it pulls another item from the list that needs an inspection type matching the type of operator. I put a label on each of the five operator called InspType that indicates which type of inspection the particular operator can perform (i.e. "InspA", "InspB" and "InspC"). Every flow item has three labels by these same names and the value of labels is either a 1 indicating it still needs that type of inspection or a 0 meaning that inspection has already been performed.

The "Pull Item from List" activity uses a query to decide which item to pull from the list and inspect next. I had some fun experimenting with the query and observing the difference in model performance. In the attached model, the query currently reads "WHERE token.InspLabel ORDER BY (InspA + InspB + InspC)" so that the operators will choose to inspect items that already have some inspections done on them ahead of items with no inspections done yet. You might try removing the ORDER BY part and compare.

Let me know if you need anything explained in the model.

inspabc.fsm


inspabc.fsm (61.8 KiB)
· 4
5 |100000

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

Kari Payton avatar image
0 Likes"
Kari Payton answered Ruben Mariduena commented
@Ruben Mariduena

One way I can think of is to use a few conditional decides along with a global table and resources. In the example, there's an individual flow for each item but it's the same logic repeated. This is so that the item can only be inspected by one operator at a time.

The first decide is to see if the item has been inspected by that inspector. So it looks at a table and see's if it's a 1 (yes) or 0 (no) for that inspector. If yes it then checks if the inspector is free. If yes the inspection happens and the table value is changes to 1. If no then it moves on to the next process. Then at the end there's a check if all inspections are done. If yes then it ends of no then it loops through again to find which inspection hasn't been done. Hope this helps answer the question! inspection-example.fsm


· 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.