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

AnyLogic仿真中如何获取每次重复实验的队列平均长度并输出

AnyLogic队列平均长度跨重复实验取值方案
  • 第一步:确认队列统计功能开启
    选中目标Queue块,在属性面板的「统计」分类下,勾选收集队列长度统计数据,统计周期保持默认的「整个仿真运行」即可,若未开启该选项,统计对象只会记录当前瞬时值,无法生成全程均值。
  • 第二步:创建存储变量
    在实验级(不要放在智能体内部)创建两个变量:
    1. 类型为double的singleRunAvg,用于存储单次仿真的队列平均长度
    2. 类型为ArrayList<Double>的allRunsAvg,初始值设为new ArrayList<Double>(),用于存储所有重复实验的单次均值
  • 第三步:编写单次仿真结束的取值逻辑
    打开重复实验的属性面板,在「仿真结束时」的动作编辑栏输入以下代码:
    // 提取当前单次仿真全程的队列长度时间加权均值
    singleRunAvg = QueueBlock.statsSize.mean();
    // 将当前次结果存入总集合
    allRunsAvg.add(singleRunAvg);
    
    注意:代码中statsSize为小写开头,需和你实际的队列块名称匹配,避免拼写错误。
  • 第四步:计算多次重复的总平均
    在重复实验属性面板的「所有仿真结束时」的动作编辑栏输入以下代码,即可得到10次重复实验的平均结果:
    // 计算所有重复实验的总平均队列长度
    double finalAvgQueue = average(allRunsAvg);
    // 输出结果到控制台,也可写入输出表或自定义变量留存
    traceln("10次重复实验总平均队列长度:" + finalAvgQueue);
    
  • 常见问题排查
    如果你此前只能拿到最终队列长度,通常是两个原因:
    1. 未开启队列长度统计功能,直接调用了QueueBlock.size()获取瞬时值,而非统计对象的均值
    2. statsSize.mean()的调用时机错误,没有在单次仿真完全结束时取值,导致统计数据不完整
  • 补充说明
    若你需要的是「每次实体进入队列时的队列长度算术平均」而非「随时间变化的时间加权平均」,将上述代码中的statsSize替换为statsCount即可。

内容的提问来源于stack exchange,提问作者Nora Seinfield

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 20:15:03