1

According to the AnyLogic's documentation, a Seize block embeds a Queue block, and "The rich interface of Queue (ability to use priorities, timeouts, remove agents, etc.) is fully exposed by Seize.".

I want to access the queue portion of a seize block in order to make agent prioritization, which can be found under the first "Advanced" tab of the Queue block properties. However, I cannot see this in the properties of a Seize block.

Is there anything I have to do in order for this property to appear in the Seize block? Or do I have to set the queue capacity of the Seize block to 0 and add a separate Queue block in front? I want the model to be as readable as possible for my case organization, thus I want to use as few blocks as possible.

Gaute
  • 49
  • 7
  • I think that priority can not change dynamically. For example, priority is changed dynamically by using parameter, seize does not work correctly. – Koji Iwamura Jul 21 '21 at 08:46

1 Answers1

1

In the seize, the conceptual difference is that instead of "queue priority" you have "task priority"

You can basically do everything related to priority using only that. If you do nothing, you use FIFO, if you want to prioritize based on priority based, well then it's the exact same. If you want to use LIFO, then you can use agent.getBlockEnterTime() as your priority variable, and if you want to compare agents, it's the same as using priority based.

So no, you don't need to add another queue

Felipe
  • 8,311
  • 2
  • 15
  • 31
  • Thanks for your answer, Felipe! It's still not clear to me how to carry out an agent prioritization. Could you expound your solution with a short example of how a prioritization based on agent characteristics could be carried out by using the Task priority property in a Seize block? – Gaute Aug 14 '20 at 09:00
  • you can define a priority variable in your agent, and the task priority will be agent.priority it's not very complicated – Felipe Aug 14 '20 at 09:19