微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

资源的利用

如何解决资源的利用

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

解决方法

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

  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 到它被利用的总时间的映射,以模型时间单位表示为双精度值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。