如何在AnyLogic中计算3个资源池的利用率平均值?
解决资源池利用率平均值计算超100%的问题
核心问题
你计算平均值时结果异常,本质是对utilization()方法的返回值类型判断错误,导致计算逻辑冗余。
问题分析
以你给出的例子:
- 三个资源池利用率:59%、38%、79%
- 正确平均值:
(59+38+79)/3 ≈ 58.67%(约59%)
你的公式((OlympicZbar.utilization()+OlympicWomensBar.utilization()+ZBarMachine.utilization())*100)/3会出现超100%的情况,原因是:
- 如果
utilization()返回的是百分比数值(比如直接返回59、38、79),公式里的*100会把结果放大100倍,最终得到约5867%,远超合理范围。 - 如果
utilization()返回的是小数形式的利用率(比如0.59、0.38、0.79),原公式是正确的,计算结果约58.67%。
解决步骤
- 确认返回值类型:先打印
OlympicZbar.utilization()等三个方法的返回结果,判断是小数还是整数百分比。 - 调整公式:
- 若返回小数:保留原公式:
((OlympicZbar.utilization()+OlympicWomensBar.utilization()+ZBarMachine.utilization())*100)/3 - 若返回百分比数值:移除
*100,使用以下公式:(OlympicZbar.utilization()+OlympicWomensBar.utilization()+ZBarMachine.utilization())/3
- 若返回小数:保留原公式:
内容的提问来源于stack exchange,提问作者Ehsan Ul Haque
相关产品推荐
相关产品推荐

