I have a model with several multiprocessors, one of which is a process that should not be worked on unless all other processors are empty (i.e. it's the only work to be done). I'm trying to utilize the preemption functionality in the FlexSim tool so that the other multiprocessors receive priority.
I cannot attach my actual model, but I've created the attached test model, which is having the same issue.
The processors require an operator to perform the process steps and the operator is controlled by a dispatcher. I have set the dispatcher to Pass To 'First Available Unless Preempting then Minimize Queue Count'.
In the attached model, there are three multiprocessors. Multiprocessor1 is the processor that should only be worked when no other work is available (no preemption). When you begin running the model, it works as expected. The operator is dispatched to Mulitprocessor1 when a flow item arrives, but when a flow item arrives in Multiprocessor2 (with preemption), the operator stops working at Multiprocessor1 and moves to Multiprocessor2.
Until this point, everything is working as I would expect. However, when a flow item arrives in Multiprocessor3 (also with preemption), the model has an issue. I have placed a break in the dispatcher's Pass To code to try to determine the issue and when this break is present, the model gets stuck and loops through this code repeatedly. If the break is removed, the model simply closes. No errors are displayed in the System Console when I reach this step.
The way I would expect the model to work is that the operator would finish the work at Multiprocessor2 and then it would move to Multiprocessor3. Both Multiprocessor1 and Multiprocessor3 have requested an operator, but because Multiprocessor3 uses preemption, I would expect the operator to go there first. There should be no difference in priority for Multiprocessor2 and Multiprocessor3, so if both are requesting an operator, I would expect the operator to go to whichever requested the operator first. This is what I'm trying to do.
Can anyone advise as to what is being done incorrectly in this model? Am I misunderstand how preemption should be utilized?
Thanks in advance!