question

Hemanth Sai Kumar avatar image
0 Likes"
Hemanth Sai Kumar asked Felix Möhlmann commented

Multiprocessor Operator Seize

Hi,
I am looking for an operator seize option in multiprocessor, I have a case where we have two multiprocessors in parallel and they both get the orders on same time and each process requires an operator.
Here when on finish of 1st process of either of multiprocessor the operators are leaving and starting the other process, but I don't want that. Is there any option to seize the operator for whole processes and then release. Below I am attaching my example model.
Thanks in advance


multiprocessor_operator_gantt.fsm

FlexSim 24.2.1
operatormultiprocessorprocess
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 Felix Möhlmann commented

What I would suggest is to use the "On Start Task" trigger of the operator to write a reference to itself onto a label on the item, when a "Uitlize" task is started. This means that after the first process, the item 'knows' who worked on it last.

You can then use this reference in further processes to dispatch the task to the same operator again directly instead of going through the dispatcher. By also increasing the priority with each step and allowing the task sequence to preempt other tasks, you can keep the operator working on the same item until it is finished.

multiprocessor-operator-gantt_1.fsm


· 6
5 |100000

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

Hemanth Sai Kumar avatar image Hemanth Sai Kumar commented ·

Thanks for your response,
what if each process need multiple operators?

0 Likes 0 ·
Jason Lightfoot avatar image Jason Lightfoot ♦♦ Hemanth Sai Kumar commented ·

Then you can do the same but have the label as an array of operators. To read the array in the multiprocessor field you'll probably need some custom code which you can base off the Multiple Teams picklist option. Within that trigger you'll also see the line that calls freeoperators(). You could change the code to only call that when the last process step requiring operators has fired.

1 Like 1 ·
Felix Möhlmann avatar image Felix Möhlmann Jason Lightfoot ♦♦ commented ·

An alternative option would be to use a list to distribute the task sequences. In the attached model the task sequences are first send to a dispatcher who then pushes them to a list (when the multiprocessor pushes to a list directly only one task sequence is created regardless of the operator number setting for some reason).

In a small Process Flow, tokens representing the operators pull from that list, dispatch the pulled task sequence and free the operator once the process finishes. In the pull query I order by whether the processor the sequence belongs to is the same as before or not, resulting in operators preferring to stay at their current station. (This check could also target the item instead, so the operators move to a different processor once the item is completely finished, even if another one arrives at the current processor.)

Ultimately this solution might be easier to implement and customize.

multiprocessor-operator-gantt_2.fsm

0 Likes 0 ·
Show more comments