Anylogic 模型搭建 01:医院排队挂号模拟试验
一、具体情境描述
患者到医院就诊,需要先挂号,再分流到对应的诊室就诊。在我们的模型中,
有两种挂号方式:自助挂号机和人工窗口,以及两种诊室:内科和外科。患者根
据不同的需求选择不同的挂号方式及诊室。
下边是我们模型搭建的最终效果展示:
图 1 医院排队挂号整体框架
图 2 运行效果展示
图 3 3D 效果图展示
二、模型搭建
2.1 整体逻辑搭建:
基本逻辑框架如下,“面板”---“流程建模库”,选择相应模块。
图 4 基本逻辑框架
各模块的属性设置:
source:患者产生的条件。“定义到达通过”选择“速率”。
图 5 source 属性设置
速率:每秒钟发生 1 个人;
间隔时间:每隔多长时间后会产生一个人;
数据库中的到达表:Anylogic 自带的数据库;
速率/到达时间表:自定义时间、人数。eg:早上看病的人非常多,到了下午和
晚上会比较少。具体操作:“流程建模库”-“时间表”,拖入一个“时间表”,并
进行相应属性设置,然后将“source”的“到达通过”与该时间表关联即可。
图 6 速率、到达时间表具体操作方式
inject()函数调用:使用代码控制产生,没有代码则 source 没有人会产生。
selectOutput:分流。患者可能选择自助机器挂号(queue)或者人工窗口挂号
(service)。
以指定概率:有百分之多少的概率会走第一/二条路;
如果条件为真:定义分流的条件。
这里我们使用指定概率,即有 50%的人会选择到人工窗口挂号,50%的人选择自
助挂号机挂号。
图 7 分流 1
路径 1
Queue:排队规则
Delay : 延 迟 , 即 完 成 一 次 挂 号 所 需 要 的 时 间 。 我 们 设 置 延 迟 时 间 为
triangular(0.5,1,1.5),即符合均值为 1 的三角分布,最多 1.5s 能完成挂号过
程;
容量:1,即一个时间内只能处理 1 个人的挂号;
图 8 表示挂号过程的 delay 的设置
直至调用 stopDelay 含义为:只有发出调动命令时才会被调用,否则一直在队列
中。
路径二
service:在这里表示人工窗口挂号。人工窗口挂号应该慢于自助机器挂号,所
以将延迟时间设置为:triangular( 0.5, 1, 1.5 )*4。
自带 queue 和 delay,但多了“资源集”概念。资源集:当调用 service 时,必
须通过别的资源的辅助才能完成。Eg.仓储物流中,需要叉车将货运到货架上,
即有叉车时才能完成该项服务,若没有叉车则等待。
图 9 人工窗口挂号的设置
在我们的情景中,通过 service 人工窗口挂号需要工作人员的辅助,所以还需要
添加 resourcePool。
“面板”--“流程建模库”---“resourcePool”。
图 10 建立 resourcePool
定义容量:可自定义设置时间表或轮班,我们这里选择“直接”,容量选择 3,
即有 3 个人。然后将 resourcePool 关联到 service 中:点击 service,选择资
源集(替代)下的捕捉按钮,选择 resourcepool,即可关联。