资源的利用

时间:2021-05-19 09:00:27

标签: anylogic

有没有办法计算特定时间范围内给定资源的利用率?我有一台可以 24 小时工作的机器,但在白天,它的利用率高于夜间。 在最终的统计中,使用函数“machine.utilization()”我得到的结果很低,这受夜间时间的影响。如何拆分这两个统计数据?

1 个答案:

答案 0 :(得分:1)

利用率计算为(工作时间)/(不包括维护的可用时间)。这意味着您的问题中描述的措施可以通过两种方式实现:

  1. 让机器在夜间“不可用”,这样时间就会被排除在计算中
  2. ResourcePool 对象有 2 个属性 on resource seizeon resource release 可以用来记录工作时间的具体实例,总结起来,只除以(8hr *(天数))而不是从模型开始的总时间

有关 AnyLogic 帮助的更多详细信息和链接,请参阅另一个问题 here 的答案。

更新: 在ResourcePoolOn seizeOn release中,AnyLogic提供了一个名为unit的参数,即正在处理的具体资源单元代理。因此,获取每单位的实际使用时间需要以下内容:

  1. 2 个 LinkedHashMap 类型的集合,映射 Agent -> Double。一个用于存储开始时间的集合(我们称之为 col_start,一个用于存储总使用时间,我们称之为 col_worked
  2. On seize 应包含以下代码:col_start.put(unit, time())
  3. On release 应包含:
double updated = col_worked.getOrDefault(unit, 0.0) + (time() - col_start.get(unit));
col_worked.put(unit, updated);

通过这种方式,在模型执行期间的任何给定点,col_worked 将包含资源单元 Agent 到它被利用的总时间的映射,以模型时间单位表示为双精度值。

相关问题