在AnyLogic中为同一资源分配多个Seize Block的优先级

问题描述

我有一个不太典型的场景,不确定如何进行此操作:

  • 有两个位于两个不同位置的电台。
  • 两个站点都需要相同的资源。
  • 资源一旦释放,就会在工作站之间移动。因此它一直从站1到站2再到站1等,直到再次被捕获为止。通过从释放块的资源处理端口添加链接来建模。因此,除非有条件,否则它不会完全释放。条件是在同一资源的seize块的队列中有等待的代理。因此,它应该继续移动,直到再次需要它为止。棘手的部分是该资源有两个抢占块,每个站一个。两个站点上的资源占用元素中,代理可能已准备就绪并正在等待。我在发布时添加了资源过程的图像。因此,在“ selectOuput4”处,它检查站1的seize元素是否有代理等待,如果是,则释放资源并可以对其进行占用。否则,它将移至站点2并检查站点2以外的站点

enter image description here

我担心的是,可能会有两个站都有特工在各自检获区中等待的情况。我如何确保资源将被站点1的seize元素而不是站点2的seize元素占用,反之亦然。如果有两个扣押元素正在等待资源,有没有办法控制资源去向?还是总是随机的?

我为冗长的帖子表示歉意,希望我能够正确地表达我的想法。

解决方法

首先,我认为您的设计有点奇怪,因为您始终占用资源。

我要做的是首先在资源中有一个状态图,该状态图控制资源从一个位置到另一个位置的移动,以便您可以更好地控制它。状态图仅在不占用资源时才用于移动资源。这将允许您的资源从站点1移到站点2,但是某些东西进入站点1队列,并且资源可以立即作出反应,并在到达站点2之前返回站点1(如果您认为这很好)。这样做的想法)

第二个问题是,代理程序到达seize块时,seize块定义了任务的优先级,而您的情况需要动态更改该优先级,据我所知这是无法做到的,所以wait块不幸的是,抢占块之前是个不错的选择。