question

Kari Payton avatar image
0 Likes"
Kari Payton asked Logan Gold commented

Help with preemption shift schedule for operators pushed and pulled from lists.

In the model, operators are created and pushed on a global list. Other fixed resources can pull operators from this list. I attempted to use preemption to have operators go off shift if they are idle or after the resource delay time. The problem is that processes stop on the fixed resource because it is waiting to push operators back on the list, but the token that pulls the operators are in the preempted flow. You can see this in my model at t=11.5. I will add different shifts of operators to the model that will continue the processes on this fixed resource.

establish-user-library-1.fsm

FlexSim 17.0.2
preemptionshift scheduleshifts
· 2
5 |100000

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

Sam Stubbs avatar image Sam Stubbs ♦ commented ·

I'm not sure I completely understand the issue, but if your tokens are getting stuck on pushing/pulling from a list would you be able to use a "Use Max Wait Timer" option for the lists?

0 Likes 0 ·
Kari Payton avatar image Kari Payton Sam Stubbs ♦ commented ·

@Sam Stubbs If I use a max wait timer, when the context of the tokens returns after preemption they are still waiting to pull operators from the list but the tokens are gone. I'm asking how to create shift schedules using preemption if I am pushing/pulling operators from a list. The problem is that if the operators are in the delay when their shift ends, I am unable to send them off shift when they're done with the delay because the preemption event already happened. Is there a way to set the priority to finish the delay before going to the preemption event? Or for tokens to join the preemption event after the delay is finished. Because the times will have a statistical distribution I can't say exactly when the process will be completed for operators to go off shift at a certain time.

0 Likes 0 ·

1 Answer

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

@Kari Payton, if you want to wait until the Operator is done with its current task, then I suggest not using preemption. The only reason to preempt a Task Executer is if you want them to stop a lower priority task sequence and begin on a higher priority task sequence.

Instead, you can give an Operator a Delay task in your off shift logic for the amount of time the Operator should be off shift. Or, you can give it a Utilize task and then call the freeoperators() command when some other condition has been met. In either case, just make sure the task has a higher priority if it's possible that the Operator could have another task in its task sequence queue.

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

Kari Payton avatar image Kari Payton commented ·

@Logan Gold ok I understand. Is this the same concept with shift schedules? Is there a way to have operators finish a task before calling the down function?

0 Likes 0 ·
Logan Gold avatar image Logan Gold ♦♦ Kari Payton commented ·

@Kari Payton, Yes. If you were to use a Time Table for instance, you can choose the "Travel To Location, Delay Until Down Time Complete" option in the Down Function. Instead of using the stopobject() command, this option gives a Task Executer a task sequence with a Travel task and a Delay task. So if you don't change the preemption method, the Task Executers will finish their current task sequence, then perform the Travel and Delay tasks.

0 Likes 0 ·
Kari Payton avatar image Kari Payton Logan Gold ♦♦ commented ·

@Logan Gold I removed the preemption and added Time Table. This works better. However, now though the operators can be pulled from a list even though they are not on schedule. Is there a way to query to pull operators from a list that have an idle state and not off shift?

0 Likes 0 ·
Show more comments