如何在AnyLogic中可视化行人智能体的行进距离?
在AnyLogic中实时可视化行人行进距离直方图
实现步骤
创建数据存储集合
在模型里添加一个ArrayList<Double>类型的变量,命名为pedestrianDistances,用来存储每个行人的最终行进距离。绑定距离收集逻辑
找到行人离开系统的触发节点(比如到达目标区域的on enter事件、离开模型的on exit事件),添加代码:pedestrianDistances.add(ped.getDistanceTraveled());其中
ped是当前触发事件的行人智能体,getDistanceTraveled()是行人库自带的获取累计行进距离的方法。配置直方图组件
从组件库拖入Histogram到画布,在属性面板设置Data为pedestrianDistances,再根据预期的距离范围调整分组区间(bins)数量和范围。设置实时刷新
两种方式可选:- 每次添加数据后立即刷新:在收集距离的事件里追加代码
histogram.repaint(); - 定时刷新:添加
Timer组件,触发时调用histogram.repaint();,比如每隔1秒刷新一次。
- 每次添加数据后立即刷新:在收集距离的事件里追加代码
可选:动态调整区间范围
如果不确定距离范围,可在刷新时自动计算数据极值并调整直方图范围:if (!pedestrianDistances.isEmpty()) { double maxDist = Collections.max(pedestrianDistances); double minDist = Collections.min(pedestrianDistances); histogram.setRange(minDist, maxDist); }
注意事项
- 若模型行人数量大,可定期清理旧数据避免内存占用过高:
if (pedestrianDistances.size() > 1000) { pedestrianDistances.remove(0); } - 可添加
Text组件绑定表达式average(pedestrianDistances),实时显示平均行进距离。
内容的提问来源于stack exchange,提问作者Kirill
相关产品推荐
相关产品推荐

