0

0

如何在AnyLogic中按患者类型分别统计服务队列等待时间

心靈之曲

心靈之曲

发布时间:2026-01-09 17:15:21

|

231人浏览过

|

来源于php中文网

原创

如何在AnyLogic中按患者类型分别统计服务队列等待时间

本文介绍在anylogic中对来自同一信源、经同一服务模块处理的多类智能体(如6类患者),实现**按类型分组统计队列平均等待时间**的实用方法,涵盖分流建模、时间测量与数据聚合三大核心步骤。

在AnyLogic中,当所有患者(Agent)均源自同一个Source、共用同一个Service模块,但需按类型(如patientType = 1~6)分别统计其在队列中的平均等待时间时,直接依赖单一Service块内置的“Waiting time in queue”统计项是不够的——它仅输出全局均值,无法自动按类型切片。此时,最可靠且易于理解的工程实践是基于类型进行逻辑分流,而非强行在单一流程中做条件聚合。

✅ 推荐方案:类型驱动的并行子流程(推荐初学者使用)

  1. 在Source后插入SelectOutputN(如SelectOutput5,可扩展至6路)
    在其“Condition”字段中,为每条出口设置类型判断逻辑,例如:

    agent.patientType == 1  // 出口1 → 类型1患者  
    agent.patientType == 2  // 出口2 → 类型2患者  
    ...  
    agent.patientType == 6  // 出口6 → 类型6患者  
    ? 提示:确保patientType已在Agent类中正确定义为int或enum,并在Source的“Agent type”或“On startup”中正确赋值(如调用您图1中的分类函数)。
  2. 为每类患者配置独立子流程
    每条出口后接:

    • Queue(可命名如 queue_type1)
    • TimeMeasureStart(放置于Queue入口前)
    • Service(复用同一资源,如machine,无需复制)
    • TimeMeasureEnd(放置于Service出口后)

    这样,每个TimeMeasureStart/End对会自动记录该类型患者的端到端服务等待时间(即Queue中排队时长 + Service内实际服务前等待时长,等价于标准“waiting time in queue”)。

    CG Faces
    CG Faces

    免费的 AI 人物图像素材网站

    下载
  3. 启用并读取各类型统计结果
    每个TimeMeasureEnd默认生成一个timeMeasureEnd_x.statistics()对象,其中:

    • timeMeasureEnd_1.statistics().mean() → 类型1平均等待时间
    • timeMeasureEnd_2.statistics().mean() → 类型2平均等待时间
      …以此类推。
      可在实验(Experiment)的“After simulation run”中汇总输出:
      traceln("Type 1 mean wait: " + timeMeasureEnd_1.statistics().mean());
      traceln("Type 2 mean wait: " + timeMeasureEnd_2.statistics().mean());
      // 或写入Excel、数据库等

⚠️ 注意事项与进阶提示

  • 资源复用无冲突:多个Service块可指向同一ResourcePool(如machine),AnyLogic自动协调资源占用,不会导致重复分配。
  • 避免冗余建模:若仅需统计、不需可视化分流,也可用Enter+Exit配合collector收集事件时间戳,但代码复杂度显著升高,易出错。
  • 验证分流完整性:在SelectOutputN的“Otherwise”出口连接Sink并启用traceln("Unrouted agent: " + agent.patientType),防止类型未覆盖导致流程中断。
  • 性能考量:本方案内存开销极小(仅增加6个轻量级统计对象),远优于运行时遍历collection或dataset做条件过滤。

通过该结构化分流设计,您不仅能精准获取6类患者的平均队列等待时间,还可自然延伸分析各类型的最大等待、95%分位数、等待时间分布直方图等高级指标——所有统计均由AnyLogic底层高效完成,无需手动编码累加或同步。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

532

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

51

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

193

2025.08.29

go语言 数组和切片
go语言 数组和切片

本专题整合了go语言数组和切片的区别与含义,阅读专题下面的文章了解更多详细内容。

46

2025.09.03

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

3

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

10

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

1

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 11.3万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号