AnyLogic - 识别占用的资源池
AnyLogic - Identify seized ResourcePool
我正在通过混合仿真(基于 DES + 代理)在 AnyLogic 中对服务流程进行建模。
在此过程中,我有不同的资源池,一个用于过程中可用的每个员工。我想知道的是,如果我可以通过 AnyLogic 函数获取 seize block.The 当前使用的 ResourcePool,我需要此信息的原因是,通过使用函数,我将分配不同的基于占用的资源池的延迟(例如,10 分钟是 rpA,15 分钟是 rpB)。
我附上一个镜头示例来说明我的问题。
假设这是我的过程:
我尝试按照此 post OtherQuestion
中显示的示例进行操作
因此,我创建了一个变量 myPool
用于抓取和模块
并在资源池中
但我在编译模型时不断收到错误消息(例如,rpA 和 rpB 中的“Main 类型的方法 myPool() 未定义”,以及“Main 类型的方法 myPool() 未定义” 》在抢.
我的 java 技能非常基础,所以我不太了解如何编写这个问题中需要的代码 OtherQuestion 来解决我的问题。
在提供答案之前,这里有一个重要的背景知识:AnyLogic 中的一切都是 Agent. The thing going through the Delay, the ResourceUnit, the Delay and ResourcePool themselves are all instances of Agent。
知道了,这是一种根据使用的资源池获取延迟时间的方法:
double delayTime = (agent.resourceUnitOfPool(rpA) != null)? 10.0 : 20:0;
上述语句在Java中使用了三元表达式。这意味着第一个 agent.resourceUnitOfPool(rpA)
被评估。该方法“returns 给定池的资源单元在已占用资源单元中的第一次出现,如果未找到则为 null。”,意思是:
- 如果使用 rpA 则返回的值将不为空,
- 否则,如果使用 rpB,则返回的值将为空。
但是,这不是一个好的方法。它适用于此模型,但如果您将来需要更改模型,它可能会不够用。
一个好的方法是创建资源单元类型并将延迟时间指定为单元属性。有关如何制作自定义资源单元的说明,请参见 here。
我正在通过混合仿真(基于 DES + 代理)在 AnyLogic 中对服务流程进行建模。 在此过程中,我有不同的资源池,一个用于过程中可用的每个员工。我想知道的是,如果我可以通过 AnyLogic 函数获取 seize block.The 当前使用的 ResourcePool,我需要此信息的原因是,通过使用函数,我将分配不同的基于占用的资源池的延迟(例如,10 分钟是 rpA,15 分钟是 rpB)。 我附上一个镜头示例来说明我的问题。 假设这是我的过程:
我尝试按照此 post OtherQuestion
中显示的示例进行操作因此,我创建了一个变量 myPool
用于抓取和模块
并在资源池中
但我在编译模型时不断收到错误消息(例如,rpA 和 rpB 中的“Main 类型的方法 myPool() 未定义”,以及“Main 类型的方法 myPool() 未定义” 》在抢.
我的 java 技能非常基础,所以我不太了解如何编写这个问题中需要的代码 OtherQuestion 来解决我的问题。
在提供答案之前,这里有一个重要的背景知识:AnyLogic 中的一切都是 Agent. The thing going through the Delay, the ResourceUnit, the Delay and ResourcePool themselves are all instances of Agent。
知道了,这是一种根据使用的资源池获取延迟时间的方法:
double delayTime = (agent.resourceUnitOfPool(rpA) != null)? 10.0 : 20:0;
上述语句在Java中使用了三元表达式。这意味着第一个 agent.resourceUnitOfPool(rpA)
被评估。该方法“returns 给定池的资源单元在已占用资源单元中的第一次出现,如果未找到则为 null。”,意思是:
- 如果使用 rpA 则返回的值将不为空,
- 否则,如果使用 rpB,则返回的值将为空。
但是,这不是一个好的方法。它适用于此模型,但如果您将来需要更改模型,它可能会不够用。
一个好的方法是创建资源单元类型并将延迟时间指定为单元属性。有关如何制作自定义资源单元的说明,请参见 here。