获取不同代理类型 AnyLogic 的等待时间

Posted

技术标签:

【中文标题】获取不同代理类型 AnyLogic 的等待时间【英文标题】:getting the waiting time for different agent types AnyLogic 【发布时间】:2020-07-06 06:55:02 【问题描述】:

希望你们都平安,

假设我有第一张照片中显示的这个系统。有 2 个源链接到 2 个不同的代理类型。他们从同一个延迟服务。

我的目标:是从第一来源和第二来源中找出代理的等待时间。

我做了什么:我首先使用了“timeMeasureEnd”数据集。我运行了模拟,然后检查了日志中的 datasets_Log。 (见图 2)。

我的问题:我不知道哪些代理来自源 1,哪些来自源 2。它只是给了我基于 FIFO 的代理索引。

我需要一种方法,让我知道每个代理的等待时间,并告诉我代理的类型(或它来自哪个来源)。

我尝试了什么: 1. 我尝试将代理 ID 保存在数据集中,但它没有显示在日志中。 2. 我创建了一个额外的队列并为其分配了一个数据集。在数据集中输入代理 ID 以及等待时间,然后我比较了代理 ID。但这需要很长时间。

我希望我说清楚。

一句话:我要得到代理的来源和等待时间。

谢谢

photo 1 photo 2

【问题讨论】:

【参考方案1】:

选项 1:

只需在您的代理中创建一个名为 source 的变量(可以是整数)

如果您的代理来自源,则在退出时您可以执行 agent.source=0;如果它来自 source1 你可以做 agent.source=1;

在延迟之后,您可以使用以下延迟时间

agent.source==0 ? delayForAgentsComingFromSource : delayForAgentsComingFromSource1 

当然 delayForAgentsComingFromSource 是一个数字。

选项 2:

如果您的代理类型是 Meow (source) 和 Meow2 (source1),那么您可以在延迟中执行以下操作:

agent instanceof Meow ? delayForAgentsComingFromSource : delayForAgentsComingFromSource1

【讨论】:

感谢您的回答.. 但是如果我有 4 个来源,我应该输入什么? 然后我将如何在数据集或日志中显示它。数据集只接受双倍 对于你的第一个问题,你可以在延迟时间内使用一个函数,然后用 ifs 和 elses 返回你想要的数字 第二,我没有看到在数据集或日志中显示的问题......它仍然是一个双重

以上是关于获取不同代理类型 AnyLogic 的等待时间的主要内容,如果未能解决你的问题,请参考以下文章

Anylogic,将代理拆分为多种不同的代理类型

Anylogic问题:两个不同的代理有两个不同的服务时间

在 Anylogic 中为代理参数分配不同值的正确方法是啥?

AnyLogic:具有不同优先级的两个客户类别

如何在 Anylogic 的一个流程图中处理不同的材料?

Anylogic:如何让代理在队列中等待直到它改变状态? (离散事件流程图)