资源的利用

Utilization of a Resource

有什么方法可以计算特定时间范围内给定资源的利用率?我有一台可以 h24 工作的机器,但在白天它的利用率高于夜间。 在最后的统计中,使用函数“machine.utilization()”我得到了一个较低的结果,这是受夜间时间的影响。如何拆分这两个统计信息?

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

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

要了解更多细节和 link 对 AnyLogic 的帮助,请参阅另一个问题的答案

更新: 在ResourcePoolOn seizeOn release中,AnyLogic提供了一个参数叫unit,就是具体的资源单元代理正在处理。所以得到每单位的实际使用时间需要如下:

  1. 2 个映射 Agent -> Double 的 LinkedHashMap 类型的集合。一个存储开始时间的集合(我们称它为 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 到其使用时间总和的映射,以模型时间单位表示为双精度值。