如何解决如何衡量资源被完全占用的时间?
我有一个名为“Docks”的资源,它的容量是14,我想计算所有14个码头都忙的总时间?有什么办法,请帮忙。
解决方法
我将提出一种可能不是最有效的解决方案。但是,它至少会引导您朝着正确的方向前进。一种方法是使用以下代码创建事件,注意 timeBusy
将是 double 类型的变量:
if( resourcePool.busy() == resourcePool.size() ) {
timeBusy++;
}
使类型为循环的事件。如果你让它每秒循环一次,timeBusy
变量会给你所有资源忙的时间(以秒为单位)。这种方法的问题是:
- 周期时间越短,模型就越慢(虽然这行代码可能不是问题)
- 周期时间越大,测量时间的准确度越低。
或者,更高级的解决方案是使用资源池的 On Seize
和 On Release
字段,您可以在其中添加代码以在每次占用资源时检查繁忙单元的数量或仅发布而不是每个周期时间。该方法的主要思想是使用三个变量:startTime
和 totalTime
类型的 double 和 start
类型的布尔值,初始值为 false
。所以 On Seize
你会写:
if( resourcePool.busy() == resourcePool.size() && !start ) {
startTime = time();
start = true;
}
还有On Release
:
if( resourcePool.busy() == resourcePool.size() - 1 && start ) {
totalTime += time() - startTime;
start = false;
}
您可能需要验证结果,但这至少应该让您朝着正确的方向前进。
这种方法的唯一缺点是结果仅在资源被占用或释放时更新。因此,例如,如果您的所有资源被占用很长时间,您可能看不到变量的任何变化。
根据您的模型,您可以判断哪种方法更适合您。
最后一点是,您可以选择使用混合方法来确保实时更新和 100% 的准确性。
如果您的模型相对简单,我个人会选择第一种方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。