question

Ryosuke S avatar image
0 Likes"
Ryosuke S asked Felix Möhlmann answered

How to dynamically add operator and change time during process

I have a model which Processor1 processtime is set to 5sec, and Process2 is set to 20sec. During process, operator is been assigned and for Processor1 1 operator, Process2 2 operator.

After operator1 finishes at Processor1, operator1 will join Processor2.

What I want to do is, I want the Processor2 to start process with 1 operator in the begining right after the flowitem arrives, and when operator1 becames available, it will join Processor2 and then, accelerate processtime of Processor2 to 15sec because second operator joined.

Can you do such a thing in FlexSim? If it can be done with ProcessFlow, that would be fine also. Thank you in advance.

capture01.png

test.fsm

FlexSim 22.0.11
processoroperatorsprocesstime
capture01.png (201.0 KiB)
test.fsm (36.5 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
1 Like"
Felix Möhlmann answered

As another approach:

I build a system like this in a project last year using preemption in Process Flow.

The operators are pulled from a list. After the first operator is pulled, the process starts with the default process time of 30s. A child tokens is created in a subflow and tries to pull an additional operator.

If it succeeds before the process finishes, it releases its parent token in to an Assign Labels activity that recalculates the process time and then connects back to the original delay that acts as a stand in for the process. (In the original model this was build for more than one such optional operator could be pulled, so the recalculation uses "old number of operators/new number of operators" as a factor to determine the process time that is still left. As a result, when the second operator is pulled after 9s of process time, the remaining time is calculated to be 21s/2 = 10.5s).

To connect this to a 3d model you could use a queue as the station. When an item arrives a token is created in the process flow and runs through the process. At the end, the item is released from the queue. Of course, for this to work would require all operator assignments to be handled via the list. I added a line of code (line 59) to the "Use Operator" field on the processor, that pushes the operator back to the list when the process finishes.

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

Ryosuke S avatar image Ryosuke S commented ·
@Felix Möhlmann Thank you so much. This is exactly what I want to do. I also understand that it is a little bit tricky.
0 Likes 0 ·

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.