测量模拟期间代理未使用的时间的方法
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
元素中使用代码框,如下所示:
【讨论】:
以上是关于测量模拟期间代理未使用的时间的方法的主要内容,如果未能解决你的问题,请参考以下文章
使用 Moq 模拟类时,如何仅针对特定方法进行 CallBase?