测量模拟期间代理未使用的时间的方法

Posted

技术标签:

【中文标题】测量模拟期间代理未使用的时间的方法【英文标题】:Method the measure the time an agent is not in use during a simulation 【发布时间】:2021-07-13 17:38:11 【问题描述】:

我有一个供应链交付模拟的模拟,其中三个车辆代理从制造商转移到客户,该模型基于 AnyLogic 网络研讨会,用于使用 GIS 进行交付车队优化。而流程图逻辑是这样设置的:

我试图从模拟中提取一些时间。其中一个时间是行程之间的代理时间,因此需要找到代理在模拟期间不移动的时间,理想情况下,这将针对每辆车单独完成或提供平均类型的事情。

我在这里看到了一个例子:TimeMeasurementStart and End 在讨论的地方,您可以使用代码而不是块来收集时间数据,但是如果有人有任何提示,对所需代码的细节或代码去向的一些帮助将非常有帮助!

我的假设是,如果我可以这样说: 总时间 - 移动时间 = 不移动时间

如有任何帮助,我们将不胜感激! 娜塔莎

【问题讨论】:

有很多,取决于你的型号。请提出更具体的问题,分享有关您的设置的详细信息等。我建议您阅读此处以了解如何提出重要问题:使用***.com/help/how-to-ask,本文专注于 AnyLogic:benjamin-schumann.com/blog/2021/4/1/… :) 嗨,本杰明,我已经用更多细节调整了问题,希望对您有所帮助 【参考方案1】:

@Benjamin 建议的替代方案是在退出时执行:

agent.timeDriving+=time()-agent.getBlockEnterTime()

【讨论】:

好点,谢谢。请注意,您仍然需要自定义代理类型,其中包含变量“timeDriving”,并且该块需要知道正在使用自定义代理类型【参考方案2】:

首先,确保您的卡车是您自己创建的自定义代理类型,我们称它们为Truck。此外,您的MoveTo 块必须知道它是Truck 代理流经它(将“高级”下的“代理类型”设置为Truck

向其中添加一个变量timeDriving 和另一个timerStart。前者用于汇总所有驾驶持续时间。后者临时用于测量何时开始行驶。

然后,在所有MoveTo 元素中使用代码框,如下所示:

【讨论】:

以上是关于测量模拟期间代理未使用的时间的方法的主要内容,如果未能解决你的问题,请参考以下文章

在模拟运行期间向时间图添加数据 Anylogic

使用 Moq 模拟类时,如何仅针对特定方法进行 CallBase?

Anylogic变量未更新

模拟电路实验 06 - | 测量放大器的设计

Anylogic - 如何在模拟中测量在制品库存 (WIP)

如何测量模拟框架 (TypeMock) 的开销?