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

AnyLogic中如何分别统计普通与优先级患者的队列停留时间分布

AnyLogic分队列统计患者停留时间解决方案

方法一:单个TimeMeasure组件+分组标记

  • 给患者智能体添加一个区分变量:比如加个布尔型变量isPriorityPatient,生成普通患者时设为false,优先级患者设为true
  • 队列前只放一个TimeMeasureStart,所有患者都走这个组件
  • 队列后只放一个TimeMeasureEnd,所有患者走这个组件
  • 打开TimeMeasureEnd的属性面板,在「数据收集」模块里,把「分组依据」选择患者的isPriorityPatient变量
  • 运行模型后,TimeMeasure会自动拆分出两组数据,你能直接看到两类患者的停留时间分布(直方图、均值、中位数等)

方法二:自定义变量+独立直方图统计

  • 给患者智能体加一个double类型的变量queueEnterTime
  • 在患者进入队列的On Enter动作里,写入:queueEnterTime = time();(记录进入队列的时间)
  • 在患者离开队列前往楼层的On Exit动作里,计算停留时间:double waitTime = time() - queueEnterTime;
  • 拖两个Histogram组件到画布,分别命名为histNormal和histPriority
  • 在离开队列的动作里加判断逻辑:
    if(isPriorityPatient){
        histPriority.add(waitTime);
    }else{
        histNormal.add(waitTime);
    }
    
  • 运行后两个直方图会分别统计对应患者的停留时间分布

关于你之前报错的原因

用两组TimeMeasureStart+TimeMeasureEnd时,必然有部分患者没走对应的Start组件(比如普通患者误走了优先级的Start,或者反过来),AnyLogic要求每个End必须匹配同一个Start进入的智能体,所以触发了「未通过对应TimeMeasureStart」的报错。而两组Start配一组End的话,End无法区分时间来自哪个Start,自然没法实现分组统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 19:29:54