基于动态自适应排队的病床安排模型.docx
《基于动态自适应排队的病床安排模型.docx》由会员分享,可在线阅读,更多相关《基于动态自适应排队的病床安排模型.docx(26页珍藏版)》请在冰豆网上搜索。
基于动态自适应排队的病床安排模型
基于动态自适应排队的病床安排模型
摘要
本文针对眼科病床优化安排问题提出一种动态自适应安排模型,并设计相关排队算法,采用MATLAB编程进行计算机求解。
通过卡方分布拟合检验,证明病人相继到达时间间隔服从负指数分布,系统的服务时间服从指数分布,选取人均等待时间、人均术前等待时间、日均出院人数为病床安排模型评价指标体系。
动态自适应排队模型服务规则考虑:
病人已等待时间,等待队列中不同类型病人所占比例,不同时段、不同类型病人有限优先级。
通过AHP确定三个因素的权重,构建综合优先顺序指标
,根据指标大小,动态调整当天等待病人的实际入住顺序,达到合理安排病床的目的。
根据日均出院人数、综合优先顺序指标、日均门诊外伤人数,可以预测病人入住时间区间。
最后根据该病人的患病类型做适当的调整。
本文的特色在于建立了动态自适应排队模型,并且分时段讨论不同类型病人的有限优先级。
应用MATLAB编程实现当天等待入院病人的动态排序,计算人均等待时间、人均术前等待时间、日均出院人数等评价指标,与原病床安排模型相应指标进行比较,验证了动态自适应排队模型的有效性。
关键字:
病床安排动态自适应优先等级层次分析法MATLAB
1.问题重述
医院就医排队是大家都非常熟悉的现象,它以这样或那样的形式出现在我们面前,例如,患者到门诊就诊、到收费处划价、到药房取药、到注射室打针、等待住院等,往往需要排队等待接受某种服务。
我们考虑某医院眼科病床的合理安排的数学建模问题。
该医院眼科门诊每天开放,住院部共有病床79张。
该医院眼科手术主要分四大类:
白内障、视网膜疾病、青光眼和外伤。
附录中给出了2008年7月13日至2008年9月11日这段时间里各类病人的情况。
白内障手术较简单,而且没有急症。
目前该院是每周一、三做白内障手术,此类病人的术前准备时间只需1、2天。
做两只眼的病人比做一只眼的要多一些,大约占到60%。
如果要做双眼是周一先做一只,周三再做另一只。
外伤疾病通常属于急症,病床有空时立即安排住院,住院后第二天便会安排手术。
其他眼科疾病比较复杂,有各种不同情况,但大致住院以后2-3天内就可以接受手术,主要是术后的观察时间较长。
这类疾病手术时间可根据需要安排,一般不安排在周一、周三。
由于急症数量较少,建模时这些眼科疾病可不考虑急症。
该医院眼科手术条件比较充分,在考虑病床安排时可不考虑手术条件的限制,但考虑到手术医生的安排问题,通常情况下白内障手术与其他眼科手术(急症除外)不安排在同一天做。
当前该住院部对全体非急症病人是按照FCFS(Firstcome,Firstserve)规则安排住院,但等待住院病人队列却越来越长,医院方面希望你们能通过数学建模来帮助解决该住院部的病床合理安排问题,以提高对医院资源的有效利用。
问题一:
试分析确定合理的评价指标体系,用以评价该问题的病床安排模型的优劣。
问题二:
试就该住院部当前的情况,建立合理的病床安排模型,以根据已知的第二天拟出院病人数来确定第二天应该安排哪些病人住院。
并对你们的模型利用问题一中的指标体系作出评价。
2.问题分析
医院病床合理安排问题可以理解为:
排队理论中如何选取服务台对病人进行服务的规则问题。
排队系统的主要数量指标有:
队长和排队长、等待时间和逗留时间、忙期和闲期。
医院病床安排过程中,考虑相对较多的指标为时间指标,选取合适的时间指标作为评价病床安排模型的指标体系。
问题二大致需要建立同一个有关动态自适应排队的模型,模型应该围绕第一问的指标体系以及当天是周几这两个方面去考虑。
由于急症数量较少并且较特殊,建模时要先处理急诊(外伤)的情况;运用该模型和对以往数据的统计,可以针对该病种的入住时间范围做个区间估计;最后可以通过细微调整模型来实现满足外界条件改变后的情况。
3.基本假设与符号说明
3.1基本假设
1.医院眼科手术条件比较充分,在考虑病床安排时可不考虑手术条件的限制。
2.其他眼科疾病不考虑急症,且术前准备时间为2-3天。
3.在预测未出院病人的出院时间时,以均值来简化计算。
.
3.2符号说明
:
当系统处于状态
时,新来病人的平均到达率(单位时间内来到系统的平均病人数),当
为常数时,记为
。
:
当系统处于状态
时,整个系统的平均服务率(单位时间内可以服务完的平均病人数),当
为常数时,记为
。
符号符号说明
某病人的编号
第i号病人当前已经等待的时间(无量纲化处理)
等待队列中,第i号病人类型所占比例
第i号病人的优先级系数
病人入院综合优先顺序指标
各个指标的权重
4.问题一的解决
4.1基本概念
日均出院人数:
每天从医院办理出院的病人数量。
该指标可以反映医院的病床周转次数。
指标值越大,病床周转次数越高,病床使用效率越高。
人均等待时间:
每个病人到达门诊时刻起到开始住院这段时间的平均值。
该指标是病人关心的指标,人均等待时间越短越好。
人均逗留时间:
每个病人到达门诊时刻起到出院这段时间的平均值。
该指标是病人最关心的指标,人均逗留时间越短越好。
4.2解题思路
步骤一,以每天为观测单位,研究2008-7-13至2008-9-11这段时间内,新来病人(门诊病人)频数分布。
步骤二,以每天为观测单位,研究2008-8-8至2008-9-11这段时间内,病人住院时间的频数分布。
步骤三,建立单队列FCFS规则下的排队模型,检验系统是否达到平稳状态。
由matlab编程可得(见附录一,程序二):
表4-1每天门诊病人频数分布表
门诊病人(人)
3
4
5
6
7
8
9
10
11
12
13
14
15
16
合计
频数(天)
2
2
5
7
8
6
11
3
5
4
3
2
2
1
61
图4-1
表格说明:
以每天为观测单位,记录不同观测单位门诊病人数出现的次数,总共观察了61天,每天平均门诊人数为8.69人。
根据分布拟合检验的思想以及皮尔逊定理,采用
检验法和MATLAB统计工具箱(程序见附录一),可以验证门诊病人频数分布表服从
分布。
因为到达的门诊病人数服从
分布,所以病人到达规律的随机过程是
过程。
定理[1]设
为时间
内到达系统的病人数,则
为参数为
的
过程的充分必要条件是:
相继到达时间间隔服从相互独立的参数为
的负指数分布。
结论:
病人的相继到达时间间隔服从参数为8.69的负指数分布。
由matlab可得:
(附录一程序三)
表4-2住院天数频数分布表
住院天数
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
人数
9
16
33
41
38
28
29
37
36
23
22
15
8
9
3
2
图4-2
表格说明:
以住院天数为观测单位,记录不同观测单位下病人的数量,总共观察349人,每人平均住院天数为9天。
根据住院天数频数分布表,将住院天数取倒数,得到系统服务时间频数表。
服务时间
人数
服务时间
人数
服务时间
人数
0.3333
9
0.1111
29
0.0667
8
0.2500
16
0.1000
37
0.0625
9
0.2000
33
0.0909
36
0.0588
3
0.1667
41
0.0833
23
0.0556
2
0.1429
38
0.0769
22
0.1250
28
0.0714
15
表4-3服务时间频数分布表
根据分布拟合检验的思想以及皮尔逊定理,采用
检验法和MATLAB统计工具箱(程序见附录一),可以验证服务时间频数分布表服从负指数分布。
综上所述,医院病床排队系统是一个生灭过程排队系统,构造多服务台模型:
等待制排队模型。
为了检验医院病床排队系统是否可以达到平稳状态,需要求出这个医院每天的出院人数,整理数据得到下表。
(程序见附录一程序四)
日期
出院人数
日期
出院人数
日期
出院人数
8-8
15
8-20
10
9-1
6
8-9
20
8-21
4
9-2
2
8-10
9
8-22
8
9-3
5
8-11
6
8-23
18
9-4
9
8-12
2
8-24
11
9-5
13
8-13
6
8-25
6
9-6
17
8-14
8-15
9
8
8-26
3
9-7
10
8-27
8
9-8
4
8-16
13
8-28
12
9-9
5
8-17
6
8-29
10
9-10
13
8-18
4
8-30
14
9-11
7
8-19
7
8-31
2
表4-4每天出院人数
图4-3每天出院人数折线图
图表说明:
出院人数表是根据附录中的数据整理得出,之所以剔除2008-7-13至2008-8-7这段期间的数据,是因为附录数据根据门诊时间进行记录,而不是根据出院时间进行记录,因此7月份每天出院人数的数据不完整。
从8月8日那天开始每天的出院人数等于入院人数。
每天出院的人数呈现大幅波动的情况,从图表中可以直观看出,这种波动基本上是以7天一个周期。
医院每天平均出院人数为8.12人。
在该系统中,病人的平均到达率
,系统的平均服务率
。
系统的服务强度
。
在该系统中病人的平均到达率大于系统的平均服务率,该系统无法达到统计平衡,这也就意味着系统一直处于忙期,即等待住院病人队列却越来越长。
4.3评价指标
人均等待时间:
每个病人到达门诊时刻起到开始住院这段时间的平均值。
该指标是病人关心的指标,人均等待时间越短越好。
人均术前准备时间:
每个病人入院时刻起到做手术这段时间的平均值。
人均术前准备时间越短越好。
日均出院人数:
每天从医院办理出院的病人数量。
该指标可以代表医院的病床周转次数。
指标值越大,病床周转次数越高,病床使用效率越高。
5.动态自适应排队模型的建立
医院原来的排队系统描述如下:
1、输入过程,病人总体为无限源,病人相继到达时间间隔服从负指数分布;2、排队为无限排队,病床的服务规则主要采用先来先服务(FCFS),同时还采用具有优先权的服务(PS);3、服务机制,多服务台模型,系统服务时间服从负指数分布。
医院的病床合理安排模型要求:
1、改变原来的病床服务规则,采用新的病床服务规则,以期减少病人的平均等待时间(门诊时间到住院时间的间隔);2、通过合理安排病人入住顺序,减少病人的术前准备时间(住院时间到第一次手术时间间隔),以提高系统的服务率,最终增加医院日均出院人数。
医院病床服务机制中具有优先权的服务机制不可改变,即外伤病人的病床安排具有绝对的优先权,其他病情由于手术时间安排的限制,导致不同时段内不同类型病人的优先级不一样。
5.1类型优先级的确定
已知该医院眼科手术主要分四大类:
白内障、视网膜疾病、青光眼和外伤。
再根据以下约束:
1.每周一、三做白内障手术,此类病人的术前准备时间只需1、2天;如果要做双眼是周一先做一只,周三再做另一只。
2.外伤疾病通常属于急症,病床有空时立即安排住院,住院后第二天便会安排手术。
3.其他眼科疾病,大致住院以后2-3天内就可以接受手术,术后的观察时间较长。
这类疾病手术时间可根据需要安排,一般不安排在周一、周三,且不考虑急症。
本文对附录中349组已经出院病人和79组入院但未出院病人的样本数据,统计分析每组数据的手术前准备时间。
根据不同类型病情的最长术前准备时间,计算每组数据的多余术前准备时间的频数,得到不同类型病情、不同术前准备时间的频数分布表。
下表描述的是有多余术前准备时间的数据。
类型
术前准备时间
多余术前准备时间
出现频数
占样本总数的频率
白内障(双)
7
5
10
0.02
白内障(双)
6
4
9
0.02
白内障(双)
5
3
21
0.05
白内障(单)
5
3
6
0.01
白内障(双)
4
2
11
0.03
白内障(单)
4
2
12
0.03
白内障(双)
3
1
13
0.03
白内障(单)
3
1
13
0.03
合计
-
-
95
0.22
表5-1有多余术前准备时间的频数分布表
表格说明:
样本数据中22%的病人有多余术前准备时间,这些病人都是白内障患者。
出现多余术前准备时间是因为白内障手术只能在周一、周三进行。
根据外伤具有绝对优先权,白内障手术只能在周一、周三进行,其他眼科疾病手术时间可根据需要安排,一般不安排在周一、周三,可以设计不同时段,不同病情的病床安排优先等级表。
本文将一周划分为三个时段:
周六、周日为一个时间段,周一、周二为一个时间段,周三到周五为一个时间段。
分析如下:
第一,白内障(双眼)的手术时间只能在周一和周三,且术前准备时间只需1-2天,因此周六、周日病床安排的有限优先级为:
白内障(双)>白内障(单)>青光眼、视网膜疾病;第二,周一、周二时,白内障(单眼)优先级别升高,白内障(双眼)的优先级别降到最后,因为此时若让白内障(双眼)患者入院,他们的术前准备时间将为6-7天,所以有限优先级为:
白内障(单)>青光眼、视网膜疾病>白内障(双);第三,同理可得,周三到周五的有限优先级为:
青光眼、视网膜疾病>白内障(双)>白内障(单)。
本文根据以上级别定性分析,并对有限优先级取
,然后进行归一化处理得到有限优先级的优先系数。
入院时间
类型优先级
优先系数
周六、周日
外伤>>白内障(双)>白内障(单)>青光眼、视网膜疾病
周一、周二
外伤>>白内障(单)>青光眼、视网膜疾病>白内障(双)
周三到周五
外伤>>青光眼、视网膜疾病>白内障(双)>白内障(单)
表5-2类型优先级
5.2动态自适应排队模型建立的总体流程
第一,将一周划分为三个时段,根据入院的具体时间分成三种情况。
第二,对每一种情况按照不同种类病人到达门诊时间的先后排成相应队列,再从各个队列中按照先到先服务(FCFS)顺序抽取相应数量的病人。
最后组合成一个单队列多服务台的排队系统。
该模型所有处理过程均由计算机自动实现。
图5-1模型建立流程图
5.3模型的构建和相关参数的定义
例如周六、日情况,白内障(双)>白内障(单)>其他眼病(青光眼、视网膜疾病)三种病人排成三队。
其他日子的类型优先级详见表5-2。
再结合医院现有的流程特点,构建了如图所示的动态自适应排队模型[3]。
图5-2动态自适应排队模型
排队算法设计的原理:
病人入院的先后顺序由病人到达的先后顺序(或等待时间长短)以及病人所属类型的优先级别综合确定。
周六和周日的情况下,病人所属类型的优先级别为白内障(双)>白内障(单)>青光眼、视网膜疾病(其他情况详见表4-1),这种限度不仅考虑两类病人已经等待的时间,还要考虑等待的三类病人的数量。
其中青光眼和视网膜疾病所占的比例越多时,对于白内障的优先程度应该逐步降低。
病人入院优先级计算公式[3]如下:
(5-1)
由相应的影响因子及其权重确定:
第1项表示病人入院的优先与等待时间有关。
其中:
为某病人当前已经等待的时间(为了避免量纲差距带来的影响,对改组数据进行无量纲化处理);
为病人等待时间的优先权重,等待时间长的病人应该优先处理,最终的就诊序列也适当提前。
第2项中
,病人入院的优先与
有关,对于同一类型的病人,其在总病人数中所占的比例越大,越适当给予照顾,
为对于病人比例的权重。
第3项表示病人入院的综合优先指标与病人有限优先级有关,
表示不同类型病人优先级(详见表4-1),对有限优先级高的病人,在服务上给予优先照顾;
为病人类型有限优先的权重。
(
)且
。
根据实际情况确定各影响因子的权重,则可计算出病人的优先级,最终确定病人的入院序列。
5.4权重的确定
权重的大小直接影响着病人在系统中的相对次序,对病人的服务产生重要影响,不同的权重会导致完全不同的结果。
权重一般可以根据经验或优化方法获得,本文采用层次分析法[4](AHP)获得。
有限度优先(既考虑优先级又考虑等待时间和队列比例关系)分3种情况进行相关设置。
权重采用层次分析法(AHP)获得。
对评价指标相对重要度进行两两比较,记为
。
关于如何确定
的值,引用数字1~9及其倒数作为标度。
下表列出了1~9标度的含义:
标度
含义
1
3
5
7
9
2,4,6,8
倒数
表示两个因素相比,具有相同重要性
表示两个因素相比,前者比后者稍重要
表示两个因素相比,前者比后者明显重要
表示两个因素相比,前者比后者强烈重要
表示两个因素相比,前者比后者极端重要
表示上述相邻判断的中间值
若因素
与因素
的重要性之比为
,那么因素
与因素
重要性之比为
。
表5-3AHP1~9标度
从而得到以下一组判断矩阵:
1
5
4
1/5
1
1/2
1/4
2
1
表5-4判断矩阵
根据判断矩阵,先计算判断矩阵的特征向量,然后经过归一化处理,即可求出权重。
最后对于判断矩阵要判断它的相容性和误差分析,进行一致性检验和修正。
本文通过MATLAB编程实现权重的求解(程序见附录二),解得权重为:
动态自适应排队模型的病人入院优先级计算公式:
入院时间
类型优先级
优先系数
周六、日
外伤>>白内障(双)>白内障(单)>青光眼、视网膜疾病
周一、二
外伤>>白内障(单)>青光眼、视网膜疾病>白内障(双)
周三、四、五
外伤>>青光眼、视网膜疾病>白内障(双)>白内障(单)
表5-5类型优先级
值
5.5问题二的求解
根据已知的第二天拟出院病人数来确定第二天应该安排哪些病人住院。
本文应用上述模型来安排9月12日的优先入院顺序。
已知2008年9月12日为周五,对102位等待入院病人的数据利用模型计算,优先入院的前20位见表5-6。
可以发现97号的外伤以绝对优先权入院;而1号、6号、7号、9号的白内障患者的入院顺序有所后调,因为白内障患者若周五入院,则须等待3天做手术。
若让他们推迟1-2天入院,不仅可以让出床位给需要更多术前准备时间的视网膜疾病和青光眼患者,而且也缩短了自己的术前准备时间,而对他们的出院时间没有影响(因为手术时间没有变化)。
至于推迟1-2天他们是否能入院的问题,本文做如下说明:
由于每天都有不同数量的病人出院,且他们的优先等级提高,所以1-2天后入院基本没有问题。
至此,可以根据已知的第二天拟出院病人数来确定第二天应该安排哪些病人住院。
出院几人就可以让前几人入院。
序号
类型
门诊时间
已等待时间
f1
优先入院顺序
97
外伤
2008-9-11
1
1
1
2
视网膜疾病
2008-8-30
13
0.85059
2
3
青光眼
2008-8-30
13
0.85059
3
4
视网膜疾病
2008-8-30
13
0.85059
4
5
视网膜疾病
2008-8-30
13
0.85059
5
8
青光眼
2008-8-31
12
0.79675
6
10
视网膜疾病
2008-8-31
12
0.79675
7
11
视网膜疾病
2008-8-31
12
0.79675
8
12
视网膜疾病
2008-8-31
12
0.79675
9
13
青光眼
2008-8-31
12
0.79675
10
1
白内障(双眼)
2008-8-30
13
0.79446
11
6
白内障(双眼)
2008-8-30
13
0.79446
12
15
视网膜疾病
2008-9-1
11
0.7429
13
16
视网膜疾病
2008-9-1
11
0.7429
14
17
青光眼
2008-9-1
11
0.7429
15
21
视网膜疾病
2008-9-1
11
0.7429
16
23
视网膜疾病
2008-9-1
11
0.7429
17
24
视网膜疾病
2008-9-1
11
0.7429
18
9
白内障(双眼)
2008-8-31
12
0.74061
19
7
白内障
2008-8-31
12
0.7011
20
表5-69月12日前20位优先入院顺序
5.6MATLAB编程实现病人入院动态排序及计算评价
本文利用MATLAB编程实现病人入院动态排序及计算评价指标。
观察分析已给数据发现,7月25日才是7月11日后普通门诊病人第一次入院的时间,所以统计出院人数情况的初始时间为7月25日。
7月25日时79张病床的病人出院时间表,如下:
月份
7月
8月
日期
25
26
27
28
29
30
31
1
2
3
4
5
6
7
出院人数
4
8
11
11
9
7
5
6
7
4
4
1
1
1
表5-77月25日时79张病床的病人出院时间表
5.6.1程序前准备
设计该MATLAB程序前需要在EXCEL中计算提取出
1、病人编号
2、已经等待的时间(门诊时间-初始时间)
3、手术后到出院前的时间(出院时间-第一次手术时间)
5.6.2算法步骤设计:
步骤一.确定是否有外伤病人
a、有:
外伤人住院,进入下一循环选择;b、无:
进入步骤2
步骤二.查看该日期是星期几,接着根据相应的
规则计算各类型病人相应的
值
步骤三.比较各
值大小,确定应该入院名额属于哪个类型的队首。
步骤四.依据表5-8,确定术前准备时间。
病种类
白内障
白内障(双眼)
其他眼科病
星期k
K=1或k=2
其他
K=1~7
K=1或k=6
其他
术前准备时间(天)
3-K
8-k
8-k
3
2
表5-8确定术前准备时间方法
步骤五.计算得出该病人出院日期,在出院日期人数矩阵中的相应位置中增加一个当日出院名额。
5.6.3程序结果及分析对比:
1、可以得到动态自适应模型下7月25日到8月28日的所有病床重新安排表(见附录六)
2、输出日均出院人数:
由于8月8号前还有以前的FCFS规则下出院的病人,所以择取8月8日到8月28日三周的时间作为统计数据周期,该周期内调整后日均出院人数=8.9048人,调整前=8.6238人,日均增加了0.2810人出院。
3、输出平均术前准备时间:
以7月25日到8月28日为统计数据,得出的结果为:
平均术前准备时间(天)