You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AnyLogic中查看代理变量存储数据并统计代理系统停留总时长

解决AnyLogic代理总停留时长统计与数据可视化问题

一、TimeMeasureStart/End模块的正确用法(补全你未成功的常见问题)

  • 把TimeMeasureStart放在代理进入系统的第一节点(比如Source输出后的代码块、代理创建的On startup逻辑),模块的Agent参数选当前代理(代理内部用this,主环境模块里用agent)
  • TimeMeasureEnd必须放在代理离开系统的最后节点(比如Sink前的代码块、代理销毁的On destroy逻辑),Result storage选择按代理存储,而非全局统计,这样每个代理的时长会被单独记录
  • 若在代理内部使用这两个模块,直接拖入代理图,Start紧随初始化逻辑,End放在销毁逻辑前即可

二、Agent Variables方法的存储与可视化修复

1. 代理变量配置(对应你的RawMaterial代理)

  • 在RawMaterial的Variables面板添加两个实例变量:
    • entryTime(类型double,初始值0):记录代理进入系统的时间
    • totalStayTime(类型double,初始值0):存储最终停留时长
  • 代理进入系统时,在入口执行:agent.entryTime = time();
  • 代理离开系统时,在出口执行:agent.totalStayTime = time() - agent.entryTime;

2. 数据持久化存储

  • 在主环境添加Dataset类型变量(例如rawMaterialStayTimes)
  • 代理离开时,追加数据到Dataset:main.rawMaterialStayTimes.add(agent.totalStayTime);(main是主环境默认引用,若自定义主环境名则替换)

3. 数据可视化

  • 拖入Histogram或Table组件到主界面,绑定数据源为rawMaterialStayTimes,即可查看所有代理的停留时长分布或明细
  • 若需实时展示当前在系统中代理的累计停留时长,添加Text组件,代码写:sum(agents(RawMaterial).stream().mapToDouble(a -> time() - a.entryTime).toArray())

三、常见排查要点

  • 确认变量为实例变量(非静态),避免被所有代理覆盖数据
  • 检查入口/出口的代码块是否被正确触发(比如代理是否走到了Sink、销毁逻辑是否执行)
  • 确保Dataset在主环境全局可访问,代理能正确引用到

内容的提问来源于stack exchange,提问作者Ehsan Ul Haque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:47:17