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

AnyLogic状态图:每日经过某状态的智能体统计及代码影响疑问

问题解答

一、状态内代码是否影响统计?

这取决于你在状态中编写的代码逻辑:

  • 不影响的情况:如果代码仅用于修改智能体属性、执行计算、调用外部接口等不改变状态流转行为的操作,不会影响经过该状态的智能体数量统计。
  • 会影响的情况:如果代码包含以下逻辑,会直接改变统计结果:
    • 触发智能体提前跳转至其他状态(比如调用agent.goToState(...))
    • 销毁智能体(agent.destroy())
    • 修改状态流转的条件判断,导致部分智能体跳过该状态
    • 让智能体重复进入该状态(比如循环跳转)

二、每日统计与图表展示实现步骤

1. 准备统计变量

根据你的统计需求选择:

  • 统计进入次数:创建两个变量:
    • int dailyEntryCount = 0;(当日累计进入次数)
    • TimeSeries<Integer> dailyEntryData = new TimeSeries<>();(存储每日统计结果的时间序列)
  • 统计不同智能体数量:额外创建一个集合记录当日进入过的智能体ID:
    • Set<Long> dailyAgents = new HashSet<>();

2. 在目标状态添加统计逻辑

打开状态图中目标状态的Entry action(进入动作),添加对应代码:

  • 统计进入次数:
    dailyEntryCount++;
    
  • 统计不同智能体数量:
    dailyAgents.add(agent.getId());
    

3. 实现每日数据汇总与重置

添加一个Event事件到模型中,设置触发类型为「按日历时间」,触发频率为每日0点,在事件的Action中编写:

  • 针对进入次数统计:
    // 将当日数据存入时间序列
    dailyEntryData.add(time(), dailyEntryCount);
    // 重置当日计数器
    dailyEntryCount = 0;
    
  • 针对不同智能体数量统计:
    // 存入当日唯一智能体数量
    dailyEntryData.add(time(), dailyAgents.size());
    // 清空集合
    dailyAgents.clear();
    

4. 绑定图表展示

  • 添加Plot Chart到主界面:
    1. 选中图表,在右侧属性面板的「Data」中点击「Add」
    2. 选择「Time series」,将dailyEntryData绑定到数据源
    3. 设置X轴为「Time」,Y轴为「Value」,调整样式即可展示每日折线图
  • 如果用Time Stack Chart(适合多状态对比):
    1. 为每个需要统计的状态创建独立的时间序列
    2. 将所有时间序列添加到图表的数据源中,图表会自动堆叠展示每日各状态的数量总和

5. 注意事项

  • 若状态内有延迟或异步操作,确保统计代码放在Entry action中(进入状态时立即执行),避免因延迟导致统计遗漏
  • 如果状态内有销毁智能体的逻辑,务必先执行统计代码,再执行销毁操作
  • 若模型中有时间加速设置,确保Event的触发时间与实际日历时间同步,避免统计周期混乱

内容的提问来源于stack exchange,提问作者Masoud Zamanipoor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:18:19