AnyLogic中柱状图未按条件显示数据的问题求助
AnyLogic柱状图条件数值未生效的排查与解决
我在AnyLogic中创建了柱状图,为数值区域设置了如下条件代码:
time(MONTH) == scenario.ModelStopTime?(double)staticData.DynamicgymActualCapacityPercentage/100 :(double) delayGym.size() / scenario.Cpar_GymCapacity
假设ModelStopTime = 12,按逻辑第12个月应显示(double)staticData.DynamicgymActualCapacityPercentage/100的值,但实际未生效。
排查与解决方法
- 修正时间匹配逻辑:
time(MONTH)返回的是带小数的连续时间值(比如第12个月对应的时间范围是11.0到12.0),直接和整数12判等大概率不匹配。改成基于整数月份的判断:
或者判断是否进入第12个月及以后:floor(time(MONTH)) == scenario.ModelStopTime ? ((double)staticData.DynamicgymActualCapacityPercentage)/100 : (double)delayGym.size()/scenario.Cpar_GymCapacitytime(MONTH) >= scenario.ModelStopTime - 验证目标变量值:在模型运行到第12个月时,通过AnyLogic调试窗口查看
staticData.DynamicgymActualCapacityPercentage的实时值,确认它已被正确赋值(非null、非0)。 - 确保图表更新时机:如果模型在第12个月直接停止,柱状图可能来不及更新对应数值。可以在
scenario.ModelStopTime时间点添加一个事件,调用柱状图的update()方法强制刷新。 - 明确类型转换优先级:给类型转换和除法运算加括号,避免因运算符优先级导致的计算错误,比如
((double)staticData.DynamicgymActualCapacityPercentage)/100。
内容的提问来源于stack exchange,提问作者Aqeel Tariq
相关产品推荐
相关产品推荐

