0

Image to illustrate point of freezing Context: Creating a scalable model for a production line to increase Man Machine Optimization ratio. Will be scaling the model for an operator (resource) to work on multiple machines (of the same type). During the process flow at a machine, the operator will be seized and released multiple times for different taskings.

Problem: Entire process freezes when the operator is being seized at multiple seize blocks concurrently.

Thoughts: Is there a way to create a list where taskings are added in the event the resource is currently seized. Resource will then work on the list of taskings whenever it becomes idle. Any other methods to resolve this issue is also appreciated!

user16171092
  • 135
  • 8

2 Answers2

1

Problem: Entire process freezes when the operator is being seized at multiple seize blocks concurrently.

You need to explain your problem better: it is not possible to "seize the same operator at multiple seize blocks concurrently" (unless you are using a resource choice condition or similar to try to 'force' seizing of a particular resource --- even then, this is more accurately framed as 'I've set up resource choice conditions which mean I end up having no valid resources available').

What does your model "freezing" represent? For example, it could just be a natural consequence of having no resources available, especially if you have long delay times or are using Delay blocks with "Until stopDelay() is called" set --- i.e., you are relying on events elsewhere in your model to free agents (and seized resources) from blocks, which an incorrect model design might mean never happen in some circumstances. (If your model is "freezing" because of no resources being available, it should 'unfreeze' when one does.)

During the process flow at a machine, the operator will be seized and released multiple times for different taskings.

You can just do this bit by breaking down the actions at a machine into a number of Seize/Delay/Release actions with different characteristics (or a process flow that loops around a set of these driven by some data if you want it to be more flexible / data-driven).

Stuart Rossiter
  • 2,432
  • 1
  • 17
  • 20
0

If this is going to become a complex model, you may want to consider using a pure agent-based approach.

Your resource has a LinkedList of JobRequest agents that are created and send by the machines when necessary. They are sorted by some priority.

The resource then simply does one JobRequest after the next.

No ResourcePools or Seieze elements required.

This is often the more powerful and flexible approach as you are not bound to the process blocks anymore. But obviously, it needs good control and testing from you :)

Benjamin
  • 10,603
  • 3
  • 16
  • 28
  • Is there a simpler method to this or any tutorial examples which I can refer to? I am pretty new to Anylogic and the proposed solution seems out of my current ability :) – user16171092 Jun 18 '21 at 05:22