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

如何在AnyLogic中分别计算两组人群的整体平均等待时间?

在AnyLogic中分别计算两组人群的整体平均等待时间

步骤1:给人群添加区分标识

  • 在代表用户的Agent(比如Person类)里加一个区分参数:要么用布尔型的isMale,要么用枚举型的gender(枚举值设为MALE、FEMALE)。
  • 在生成Agent的Source模块里,按业务逻辑给这个参数赋值,确保男女两组被准确标记。

步骤2:追踪单个人的等待时长

  • 当Agent到达入口、开始等待时(比如进入Queue组件前),把当前时间存到Agent的waitStartTime变量里(类型选double,存时间戳)。
  • 当Agent结束等待(比如离开Queue、开始接受服务),计算等待时长:waitTime = time() - waitStartTime,把结果存在Agent的waitTime变量中。

步骤3:分两组统计平均等待时间

有两种实用方法可选:

方法一:用内置统计组件(推荐)

  • 添加两个Statistics Collector组件,分别命名为maleWaitStats和femaleWaitStats。
  • 配置每个统计器:
    • 数据类型选Agent,关联你的Person类。
    • 过滤条件:男性统计器填agent.isMale == true,女性统计器填agent.isMale == false(用枚举的话就是agent.gender == Gender.FEMALE)。
    • 要收集的值选agent.waitTime,统计类型设为Average。
  • 之后直接调用maleWaitStats.getAverage()、femaleWaitStats.getAverage()就能拿到两组的平均等待时间,还能绑定到仪表盘、文本框实时展示。

方法二:手动维护统计变量

  • 在主环境(Main)里加四个变量:
    • totalMaleWaitTime(double,初始0):累计男性总等待时长
    • maleCount(int,初始0):男性总人数
    • totalFemaleWaitTime(double,初始0)
    • femaleCount(int,初始0)
  • 当Agent结束等待、算出waitTime后,加判断逻辑:
    if(isMale){
        totalMaleWaitTime += waitTime;
        maleCount++;
    } else {
        totalFemaleWaitTime += waitTime;
        femaleCount++;
    }
    
  • 计算平均时要处理除数为0的情况:
    • 男性平均:maleCount > 0 ? totalMaleWaitTime / maleCount : 0
    • 女性平均:femaleCount > 0 ? totalFemaleWaitTime / femaleCount : 0

步骤4:验证逻辑

  • 运行模型时,用trace()函数打印每个Agent的性别和等待时长,确认数据追踪没问题。
  • 对比两种统计方法的结果,确保一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:15:35