资源的利用
Utilization of a Resource
有什么方法可以计算特定时间范围内给定资源的利用率?我有一台可以 h24 工作的机器,但在白天它的利用率高于夜间。
在最后的统计中,使用函数“machine.utilization()”我得到了一个较低的结果,这是受夜间时间的影响。如何拆分这两个统计信息?
利用率计算为(工作时间)/(不包括维护的可用时间)。这意味着您的问题中描述的措施可以通过两种方式实现:
- 让机器在晚上'unavailable',这样计算的时间就会被排除
- ResourcePool对象有2个属性
on resource seize
和on resource release
可以用来记录具体实例的工作时间,总结起来除以一段时间(8 小时 *(天数))而不是模型开始的总时间
要了解更多细节和 link 对 AnyLogic 的帮助,请参阅另一个问题的答案 。
更新:
在ResourcePool的On seize
和On release
中,AnyLogic提供了一个参数叫unit,就是具体的资源单元代理正在处理。所以得到每单位的实际使用时间需要如下:
- 2 个映射 Agent -> Double 的 LinkedHashMap 类型的集合。一个存储开始时间的集合(我们称它为
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 到其使用时间总和的映射,以模型时间单位表示为双精度值。
有什么方法可以计算特定时间范围内给定资源的利用率?我有一台可以 h24 工作的机器,但在白天它的利用率高于夜间。 在最后的统计中,使用函数“machine.utilization()”我得到了一个较低的结果,这是受夜间时间的影响。如何拆分这两个统计信息?
利用率计算为(工作时间)/(不包括维护的可用时间)。这意味着您的问题中描述的措施可以通过两种方式实现:
- 让机器在晚上'unavailable',这样计算的时间就会被排除
- ResourcePool对象有2个属性
on resource seize
和on resource release
可以用来记录具体实例的工作时间,总结起来除以一段时间(8 小时 *(天数))而不是模型开始的总时间
要了解更多细节和 link 对 AnyLogic 的帮助,请参阅另一个问题的答案
更新:
在ResourcePool的On seize
和On release
中,AnyLogic提供了一个参数叫unit,就是具体的资源单元代理正在处理。所以得到每单位的实际使用时间需要如下:
- 2 个映射 Agent -> Double 的 LinkedHashMap 类型的集合。一个存储开始时间的集合(我们称它为
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 到其使用时间总和的映射,以模型时间单位表示为双精度值。