ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Anylogic模型搭建01:医院排队挂号模拟试验

2021-12-15 11:58:48  阅读:230  来源: 互联网

标签:01 窗口 内科 Anylogic 挂号 设置 诊室 type


一、具体情境描述
患者到医院就诊,需要先挂号,再分流到对应的诊室就诊。在我们的模型中,有两种挂号方式:自助挂号机和人工窗口,以及两种诊室:内科和外科。患者根据不同的需求选择不同的挂号方式及诊室。
下边是我们模型搭建的最终效果展示:
图 1医院排队挂号整体框架图 1医院排队挂号整体框架
图 2 运行效果展示图 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,即可关联。
在这里插入图片描述图 11 resourcePool关联到service

delay1:内科诊室。假设delay1为内科诊室,相对较慢,延迟时间设置为triangular( 0.5, 1, 1.5 )/分钟,容量设置为1,即每次只能处理一位患者。
在这里插入图片描述图 12 delay1内科诊室设置
delay2:假设delay2为外科诊室,相对较慢,延迟时间设置为triangular( 0.5, 1, 1.5 )*2/分钟,容量设置为1,即每次只能处理一位患者。
在这里插入图片描述图 13 delay2外科诊室设置
基本流程框架搭建完成。

2.2 可视化效果搭建
添加医院的布局、人的动画。
空间标记中的路径、点节点、矩形节点搭建图形,再使用面板-演示-文本,插入说明文本。
在这里插入图片描述图 14 医院基本布局
人工挂号窗口中,矩形节点中的三个小符号是吸引子:如果不使用吸引子,人会乱跑。点击人工窗口挂号中的矩形节点,点击属性中的“吸引子”,在弹出的创建模式中选择“网格”,创建3X1为排列方式的吸引子。
在这里插入图片描述图 15 吸引子设置

选择“面板”–“三维物体”–“超市”,拖入“自动柜员机”作为我们的挂号机器,选择“收银台”插入人工挂号窗口和内科、外科诊室中。
在这里插入图片描述图 16 插入图形

可视化效果图与基本逻辑框架关联:queue与path(自助挂号机路径)相关联;delay与node(自助挂号机点节点)相关联;service与人工窗口的path1(路径)和node1(矩形节点)关联;queue1关联到内科path2,delay1关联到内科node2,queue2同理。
在这里插入图片描述在这里插入图片描述在这里插入图片描述插入三维效果图
“面板”–“演示”–“三维窗口”
在这里插入图片描述图 17 插入三维窗口
添加小人的形象:“Source”–“新智能体”–“创建自定义类型”,命名为“Person”。现在有“Main”和“Person”两个智能体。
在这里插入图片描述图 18 新建Person智能体
对Person加一些参数,以区分不同的患者挂的是内科还是外科:“面板”–“智能体”,拖一个“parameter”进来,重命名为“type”。“type”等于1或2,1为内科,2为外科。
在这里插入图片描述图 19 加入参数type

selectOutput1:分流。当智能体person的type为1时输出到queue1内科。在这里插入图片描述图 20 挂完号的患者被分流到内科和外科
给智能体加入人的形象。“面板”–“三维物体”,选一个小人;添加文本标记,设置文本属性,文本:type的动态值。运行模型,检验是否type=1的人去了内科,type=2的人去了外科。
在这里插入图片描述图 21 加小人

三、数据输出
在Person里添加两个参数:timeStart和timeStay。
在这里插入图片描述source:离开时:agent.timeStart=time(),表示将离开source时的时间赋给timeStart;
sink,进入时:agent.timeStay=time()-agent.timeStart,将从进入到离开时的时间赋给timeStay。
在这里插入图片描述输出excel:即在指定的excel表中能看到每个人的timeStay。
“工程”–右击文件夹–“打开”,打开我们模型存储位置所在的文件夹,新建excel表。
在这里插入图片描述将excel关联到系统里:“面板”–“连接”–“Excel文件”,拖入一个excelFile,对excelFile属性进行设置,关联到刚才新建的excel表格。
在这里插入图片描述添加一个函数row,类型为int,初始值为2.
在这里插入图片描述设置sink,将数据输入到excel中。
agent.timeStay=time()-agent.timeStart;
excelFile.setCellValue(agent.type,1,row,1); 即将type值写入sheet1,第row行,第1列
excelFile.setCellValue(agent.timeStay,1,row,2); 将typeStay值写入sheet1,第row行,第2列
row++ 每写入一行后自动换行输入,这一行最后不加 ;
在这里插入图片描述运行(运行前需先将要导入数据的excel关掉,否则无法运行)。Excel效果如图:
在这里插入图片描述

标签:01,窗口,内科,Anylogic,挂号,设置,诊室,type
来源: https://blog.csdn.net/weixin_62605842/article/details/121948828

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有