有没有办法计算特定时间范围内给定资源的利用率?我有一台可以 24 小时工作的机器,但在白天,它的利用率高于夜间。 在最终的统计中,使用函数“machine.utilization()”我得到的结果很低,这受夜间时间的影响。如何拆分这两个统计数据?
答案 0 :(得分:1)
利用率计算为(工作时间)/(不包括维护的可用时间)。这意味着您的问题中描述的措施可以通过两种方式实现:
on resource seize
和 on resource release
可以用来记录工作时间的具体实例,总结起来,只除以(8hr *(天数))而不是从模型开始的总时间有关 AnyLogic 帮助的更多详细信息和链接,请参阅另一个问题 here 的答案。
更新:
在ResourcePool的On seize
和On release
中,AnyLogic提供了一个名为unit的参数,即正在处理的具体资源单元代理。因此,获取每单位的实际使用时间需要以下内容:
col_start
,一个用于存储总使用时间,我们称之为 col_worked
)On seize
应包含以下代码:col_start.put(unit, time())
On release
应包含:double updated = col_worked.getOrDefault(unit, 0.0) + (time() - col_start.get(unit));
col_worked.put(unit, updated);
通过这种方式,在模型执行期间的任何给定点,col_worked
将包含资源单元 Agent 到它被利用的总时间的映射,以模型时间单位表示为双精度值。