服务块中的 Anylogic 测量时间

Posted

技术标签:

【中文标题】服务块中的 Anylogic 测量时间【英文标题】:Anylogic Measuring Time in a Service-block 【发布时间】:2020-09-09 11:30:14 【问题描述】:

有谁知道如何测量服务块中的时间,特别是服务块队列中的平均时间? 谢谢!

【问题讨论】:

【参考方案1】:

你不能直接

使用“On enter”操作记录代理中的队列进入时间(通过time() 函数)(这需要使用带有double 变量的自定义代理类型,称为serviceEntryTime 或类似)

使用 'on capture' 操作通过time() - serviceEntryTime 测量直到它离开队列(通过占用它需要的资源)之前的持续时间,并将这个值添加到一个统计对象,然后它将为您提供各种统计信息(包括平均值)通过它提供的功能。

或者将您的服务块拆分为 TimeMeasureStart -- Seize -- TimeMeasureEnd -- Delay -- Release 序列。 TimeMeasureEnd 块有一个内置的直方图数据对象,它将通过blockName.distribution.mean() 为您提供平均值。

【讨论】:

谢谢!我试图实施你的第二个建议,但现在它说它“无法将双精度转换为 historgramdata。你知道我该如何解决吗? 我的“第二个建议”是什么意思?它们都不涉及向 HistogramData 对象显式添加条目,因此您所说的错误不会发生。您可能需要准确说明您实现了什么。

以上是关于服务块中的 Anylogic 测量时间的主要内容,如果未能解决你的问题,请参考以下文章

Anylogic:测量服务时间

AnyLogic - 修改代理变量

Anylogic:在汇编程序块中一次组装多个代理

Anylogic getRemainingTime 和函数

在任何逻辑中测量汇编程序中的时间,问题澄清

源块中的费率是固定费率吗?