年眼科手术题全国一等奖论文
眼科病床的合理安排
摘要
某医院眼科门诊每天开放,对眼疾病患者进行诊断并实施住院安排,安排
的合理性对医院和病人的利益都会产生影响,因此我们针对病床的安排问题建立了相关数学模型,并进行了
和讨论。
对于问题一,要实现合理的住院安排,需要有合理的评价指标体系。我们从医院和病人两方面进行考虑,建立了病床有效利用指数、病人满意度函数共同作用的双向评价指标体系,实现了对医院病床安排方案的优劣性评价。
对于问题二,以病人等待住院及等待手术时间之和最短为目标,建立动态规划模型,确立了各类病人的入院时间优先级,创立了安排方案,再利用计算机编程对病人住院全过程进行了仿真,最后利用问题一的双向评价指标体系对模型进行了评价,验证了安排方案的合理性。
对于问题三,根据统计情况,建立基于概率论的边界优化预测模型,在病人门诊时即可得到病人入住时间区间,使得病人了解了自己的住院时间情况。
对于问题四,以病人的满意度指标为决策变量,确定医院手术时间安排需做出相应调整。利用仿真模型对调整的不同策略进行仿真并通过比较病人满意度择取最优策略,得到医院手术最佳调整方案。
对于问题五,眼科室分为若干科室,医院为便于管理,需要为各科室按比例分配病床。为求解该比例,我们以所有病人在整个系统内平均逗留时间最短为目标,以各科室床位数与病人平均逗留时间的函数关系、病床总数限制为约束条件,建立基于排队论思想的规划模型,最终求解得到最佳床位比例。 关键词 双向评价指标体系 动态规划 计算机仿真 排队论
1
一 问题的重述
1.1 基本情况
某医院眼科门诊主要进行白内障、视网膜疾病、青光眼和外伤四类手术,患者每天均可来治疗,治疗流程如下
图1 入院就诊流程图
医院有79张病床,在病床的安排上对全体非急症病人采取FCFS规则。 1.2 相关信息
白内障患者周一、周三进行手术,术前准备只需1-2天,其中做两只眼的患者一般是周一做一只,周三做另外一只;外伤有空床位即可安排住院,住院后第
-3天,但是术后观察时间长,根二天可进行手术;其他眼科疾病术前准备只需2
据需要安排手术时间,一般不安排在周一、周三。
附录是2008-7-13至2008-9-11时间段内各类病人门诊、住院、手术以及出
可分为三部分:第一部分,病人入院时间、手术时间以及出院的时间概况。数据
院时间全部已知;第二部分,只知病人入院时间以及手术时间,出院时间未知;第三部分,仅知病人门诊时间,其他未知。
1.3 需要解决的问题
医院的先到先得安排模型使得越来越多的病人排队等候住院,这就涉及到资源的合理利用,需要解决的问题:
(1) 确定合理的评价指标体系,对该医院的病床安排模型进行优劣分析。
(2) 根据住院部当前的情况,建立数学模型,使得院方能根据第二天拟出院人数确定具体的病床安排方案,并用问题一中的评价指标体系对该病床安排模型进行评价。
(3) 已知医院住院病人及等待住院病人的人数统计情况,建立合适的模型,使得在病人门诊能知道其住院时间区间。
(4) 在医院住院部周六、周日不安排手术的情况下,得出问题二的安排方案;并分析医院的手术时间安排是否应该调整。
(5) 一般情况下,医院为了便于管理,在安排病床问题上采取一定的方案,使得各类病人占用病床的比例大致固定。依此方案,建立满足所有病人在系统内的逗留时间(包括等待入院及入院时间)最短的病床比例分配模型。
二 模型假设
(1) 在建模过程中,只有外伤属于急症,其他眼科疾病不考虑急症。 (2) 病床安排时不考虑手术条件的限制。
(3) 附录中的数据准确可靠。
(4) 白内障双眼病人的手术时间在一周内完成。
2
(5) 病人到达医院的相继到达时间间隔独立且服从参数为的负指数分布。 ,(6) 病床的服务时间独立同分布且服从参数为的负指数分布。 ,
三 基本符号
——医院病床的有效利用指数 ,()t1
——病人对医院的满意度函数 ,()t2
——第二天拟出院病人数 M
——第一天来看病以及之前没有安排住院的第类病人数 mii
——第类病人的术前准备时间 Rii
——,表示星期一,依次类推 Dj,1j
——第类病人可以做第一次手术的日期集合 Iii
——第类病人出院的概率 pii
——闲置的病床数的期望值 Eb()
——第类病人的平均逗留时间 Wisi
W ——第类病人的平均等待时间 iqi
——第类病人平均接受服务时间 Tii
——分配给第类病人的病床数 Sii
L ——第类病人排队等待住院的患者数 iqi
——第类病队列系统的系统负荷 Lii
四 问题的分析 4.1问题一的分析
附录数据是在FCFS准则下病人的住院安排方案,但存在不合理情况:(1) 等
待的队伍越来越长;(2)有些患者的手术安排不符合医院常规要求,如
表1 部分病人诊断、住院、手术及出院时间
3
第一次手术 第二次手术 类型 门诊时间 入院时间 出院时间 时间 时间
白内障(双眼) 2008-7-17 2008-7-29 2008-8-4 2008-8-16 2008-8-8
白内障 2008-7-23 2008-8-6 2008-8-11 / 2008-8-13
由表1可以看出白内障患者入院时间距离第一次手术时间都是5、6天,而题目中已说明白内障病人术前准备只需1、2天,术前准备时间的过长是这个安排方案的一个劣势,除此之外,2008-7-17是星期四,白内障患者手术时间为周一、周三,该患者住院在此时住院是对病床的一种不合理的利用。
因此建立一个病床安排方案是必要的,但是何种方案是最优最合理,需要用病床安排评价指标来决策。在该问题中,安排模型方案最优就要使医院和病人都获得最大利益:(1)医院方面,病床的空闲时间最小,病人数量最大;(2)病人方面,等待入院、住院时间最短。
根据上面的分析,该问题属于多指标优化模型,要使得医院的效益最优,可考虑病床的有效利用指数。同时病人接受医院的各种服务,又可看作排队系统,涉及到医院的服务效率,也可理解为病人对接受服务时间的满意度,因此使用这两项指标来评价病床安排方案。
4.2 问题二的分析
已知第二天拟出院病人数,即得到可安排病人入住的数量。白内障患者手术只能在周一和周三进行,且除急症外不安排其他眼科手术。现在住院部对全体非急症病人是按照FCFS规则安排住院,不论是星期几,只要是轮到了该名患者便安排其住院,这样可能导致在手术前(除去术前准备时间),病人需要在医院多住几天,而新来的患者等待住院的时间也会延长,造成等待的病人的增多,等待的时间的增加。这种安排不仅使得病床的利用率降低也使得病人的花费(包括经济以及时间方面)增加,这是对资源的浪费。
通过上述分析,可以根据不同的手术准备时间、不同眼病手术安排时间,以等待的冗余时间最短为目标,建立动态规划模型,针对不同的日期给出不同的安排策略,即每类病人安排入院的优先级。然后利用计算机仿真技术对所给第一部分数据中的病人进行入院分配。最后利用问题一中评价指标体系对其进行评价。 4.3 问题三的分析
已知住院病人及等待住院病人的统计情况,当一个病人来门诊时预测该病人的入院时间区间,这是一个预测的问题,关键点是知道闲置的病床数量以及等待入院的人数。
由问题一的分析知医院的FCFS病床安排规则是不合理的,因此我们采用问题二中病床安排规则,对等待住院的所有病人进行住院时间的安排。考虑到每天各类病人中病人的数量有一定的范围,根据同类病人先到先得的原则,可以建立基于概率的边界优化模型,分别给出分配住院时间,从而得到一个时间区间。 4.4 问题四的分析
在本问中,由于周六、周日不再安排手术,可能需要重新考虑医院的手术时间安排。在问题二所建模型的基础上,加入周六、周日无手术的限制条件,在已知第二天拟出院病人数的情形下重新求解确定第二天应该安排哪些病人住院。故而以病人的满意度指标为决策变量来确定医院的手术时间是否需要做出相应的调整。
周末不再安排手术导致周一至周五的手术量增加。由假设,不考虑手术条件的限制,当天已经做好手术准备的病人即可接受手术。通常白内障手术与其他眼
4
科手术(外伤除外)不安排在同一天。故而若需要调整手术时间,则主要改变白内障手术的时间。考虑到病人的心理承受能力,通常白内障双眼手术时间需至少间隔一天;同时根据假设,双眼手术需在同一周内完成。考虑上述限制,可以得到白内障手术时间的安排策略。进一步通过模型二对病人的入院时间进行仿真模拟,通过比较病人的满意度进行择优选取。
五的分析 4.5 问题
由上述四个问题,医院系统可看作是一个排队系统,来看病的患者为顾客,
服务台则是病床。在此系统内病人的逗留时间包括等待接受的服务为住院治疗,
住院时间以及住院时间。流程如下图:
图2 排队系统流程图
在本问中,从便于管理的角度出发,医院病床安排采取使各类病人占用病床的比例大致固定的方案,故而可以考虑将眼科室根据眼病的类别分为多科室,每个科室工作相互独立,现在需要确认每个科室分配病床的比例。对于每一个科室,可以利用排队论理论建立平均逗留时间与病床数的函数关系,进一步对整个系统以所有病人最短平均逗留时间为目标,病床总数等条件为限制建立规划模型。
五 模型的建立和求解
5.1 模型一的建立和求解
5.1.1 模型一的建立
对医院而言,病床是一种重要的资源,能得到合理的利用对医院自身和病人都是有利的。要得到较合理的安排方案,需要从各个方面考虑。 (1) 病床的有效利用指数
针对医院的先到先得规则,当有空的床位出现时,就安排给先进行门诊的病人(急诊除外),后诊段的病人则等待新的空床位出现。由于手术时间的安排,部分病人在入院后往往需要等待一段时间才能进行手术,无形中造成了病床资源的浪费。在此,引入病床的实际利用率。从医院方面来考虑,病床的实际利用率越高越好,记之为,定义 ,1
tc,2 (1) ,1,,1t0
其中,是所有病人住院的平均时间,是病人从住院到进行手术之前住院tt02
的平均天数,是病人的术前平均准备时间。 c
另外,对于整个医院系统,病床的整体利用率也需要考虑。我们知道,在一定时期内,病床的日使用率、病床周转率、平均病床工作日都是反映医院工作质
5
量的重要指标。为了计算病床的整体利用率,引入病床的日使用率及病床周转率,分别记为和,其定义分别如下 ,,23
n1,, (2) 2N
n2,, (3) 3N
其中表示总的床位数;表示所有病人平均每天使用的床位数,即每天病人Nn1
的平均住院人数;表示病床每天的平均利用次数。则病床的整体利用率为 n2
(4) ,,,,,023
由此定义有效利用指数 ,()t1
(5) ,,,,,,()(1),(01)t,,,,,101
为待定参数。 其中,,
(2) 病人的满意度函数
一般来说,病人对待住院安排问题是有一定的心理承受能力的,超过这个承受的时间,对医院工作的满意度就会急剧下降。病人住院后能及时的进行手术是最好的方案(这里的及时指做好术前准备后),随着手术的拖延,住院时间增加,病人的满意度会下降,并且满意度下降的速度很快,当时间趋于无穷时,满意度趋于0。
是门诊到入院时间,是入院到进行手术时间,手术后到出院这段时间所tt12
受主要影响为病人的康复情况可以不考虑,因此只考虑门诊到术前这段等待时间t
(6) ttt,,,,,,,,(1),(01)12
根据经验,可取。 ,,0.3
病人的满意度和时间的关系的图形趋势如下
6
图3 满意度走势曲线
根据满意度函数的规律,可取满意度函数
t2,()exp{()}t,, (7) 2,
其中是承受因子,为待定参数。 ,
根据经验,当时,,这样 t,1.7,,4.217,()0.85t,2
(3) 双向评价指标体系的建立
综上所述,建立基于病床有效利用率和病人满意度的双向评价指标体系, 评判标准为
,,,,,()(1)t,,,,101, (8) ,t2()exp{()}t,,,2,,,
当、大于70%时,说明此方案是合理的,特别当,达,()t,()t,()t,()t1212到85%及以上,说明此方案是优良的。
5.1.2模型的应用
当前该住院部采取的病床安排模型是FCFS规则(急症除外),现采用双向评价指标体系对该模型进行评价。
考察住院部住院人数的变化情况,几乎每天都会有病人出院,然后有新的病人住进来。按照医院现采取的病床安排模型,通过分析数据发现,随着时间的增加,当天医院入住病人数与出院病人数持平,且有病人未能在当天入住,即当到达一定时间后,该住院部会处于满负荷的状态。此时病床的使用率为100%,而病床周转率则与当天出院人数有关。抽取稳定状态下部分数据,求得病床每天的
7
平均利用次数为,,,n,94.333333t,9.539130t,10.559322t,2.5171702012
,。 c,1.333333N,79
取权值,最终求得 ,,0.3
,,。 ,,0.875897,,1,,1.194093123
,,1,1 ,,0.301279,2,
此时,说明病床的利用率已经大于它本身的承受能力,不利于系统的长期,,11
运行。另一方面,病人对现有模型的满意度很低。
以上评价结果说明需要对现有安排模型进行改进。
5.2模型二的建立
5.2.1确定各类病人入院优先级
先将白内障患者分为两类:白内障患者(单眼)、白内障患者(双眼);再按
第1、2、3、准备时间以及病症的类别将病人分类,共分为4类,依次编号,则4类患者分别为:外伤患者、白内障患者(单眼)、白内障患者(双眼)及其他疾病患者。
设第二天拟出院病人数为,第一天来看病以及之前没有安排住院的第类Mi病人数为。 mi
不同类别的病人,准备时间不同。外伤患者住院第二天即安排手术,准备时间为1天;白内障患者术前准备时间大约需1、2天;其他患者大致住院以后2-3天内就可以接受手术,即准备时间为2-3天。
记第类病人的准备时间为。 Rii
白内障患者手术时间仅安排在周一、周三,对于做双眼的患者则是周一先做一只,周三再做另一只,同时不与其他眼科手术(急症除外)安排在同一天。故
Dj(1,2,,7),L安排床位时还需考虑时间因素,下边用来表示日期。表示星Dj1
D期一,依次类推,表示星期天。对赋值,令 Dj7
Djj,,(1,2,,7)L j
定义逻辑运算如下
7(),,,jiij,Di,, (9) ,jjiij,,(),
jiij,,,,7(7), Di,, (10) ,jjiij,,,(7),
进而,表示第类病人可以做第一次手术的日期集合为,具体如下 Iii
8
,, I,{1,3}I,{1}I,{2,4,5,6,7}234
图4 各类病人可以做第一次手术的日期集合
(1) 由于外伤患者属于急症,通常在有空余床位的情形下优先考虑分配住院。故在分配时,不需要考虑其他因素,先将个空余床位分给外伤患者。 m1
(2) 为了减少病人住院等待手术的冗余时间,采用动态规划的
,将决策过程分为3个阶段,每一阶段决定哪一类或几类病人分到病床,将类别作为决策变量,累计的量选为状态变量,分步给出病床的分配方案。
决策变量:,即任选取一类病人分配病床,分配数为。 Xik,,(1,2,3)mki
状态变量:,即从第阶段到第3阶段的决策方案包括的患者kMk(1,2,3),k
M,2,3,4类别,其中。 ,,1
状态转移方程: MMXk,,,,1,2,3kkk,1
允许决策集合: DiiMviIk,,,,{:,()},1,2,3kkki
viDR(),,指标函数: kji
最优值函数:表示在状态下确定的k类病人安排住院手术时间之fM()Mkkk
和的最小值。则有逆序解法的基本方程:
9
fMvifMk()min{()()},3,2,1,,,,kkkkk,,11,XD,kk ,fMvD()(1)1,,,,444j,
其中。 MMXk,,,,1,2,3kkk,1
(3) 模型的求解
手术的准备时间为一个区间,为了使冗余时间达到最小,我每一类眼科疾病
们以的左端点(即每类疾病最小准备时间)为总目标,右端点为次目标进行求Ri
解。
通过编程求解得到最优的分配方案如下表:
表2 一周各类病人分配优先权
星期一 星期二 星期三 星期四 星期五 星期六 星期天
2 2 4 4 4 3 3
4 4 3 2 2
2 4 4
注:未填的表示不继续安排病人入住。
5.2.2分配床位
确定了每一类病人的优先级后,对同一类病人采取FCFS规则安排住院。我们利用C++编程,运用计算机仿真技术对第二天病人的床位安排进行了模拟。具体流程如图5所示。
仿真模拟选取数据为题中所给的第一部分数据。部分结果如下表。
表3 第一部分数据仿真部分结果
序号 疾病类型 门诊时间 入院时间 手术时间 出院时间
1 外伤 2008-7-13 2008-7-14 2008-7-15 2008-7-21
2 视网膜疾病 2008-7-13 2008-7-14 2008-7-17 2008-7-27
3 白内障 2008-7-13 2008-7-14 2008-7-16 2008-7-19
4 视网膜疾病 2008-7-13 2008-7-14 2008-7-17 2008-7-27
5 青光眼 2008-7-13 2008-7-14 2008-7-17 2008-7-25 5.2.3模型的评价
(1) 参数以及变量的确定
通过统计7月22日至8月19日的仿真结果,得到数据如下:
,,,c,1.333333,N,79,,t,9.190476t,1.540670t,2.157895n,69.931030121
n,76.896552
通过计算得:
,, ,,0.910281,,0.885203,,0.973374123
,,0.3根据经验,取权值,求得病床有效利用率,。 ,,0.876228,,0.80345012
分析结果知:、均大于80%,根据模型一中双项指标体系的标准,可,,12
认为此分配方案设置合理。另一方面,通过与医院现采取病床安排模型的指标比
10
较,此分配方案更优。
图5 计算机仿真算法流程图
11
5.3 模型三的建立和求解
5.3.1 模型三的建立
(1) 闲置病床的确定
由于不同类型的病人术前准备时间、进行手术安排、术后观察的时间是不同的,不能对所有的这些病人采取相同的安排方案,我们按照问题二的方法将这些病人分为4类,即外伤患者、白内障患者(单眼)、白内障患者(双眼)以及其
患者。 他眼疾
统计出住院病人以及等待住院的病人中这四类病人的数量。表示住院病xi0人中第类病人的人数,表示等待住院病人中第类病人的人数。 xiii1
医院的病床安排系统是一个动态变化的过程,不断地有住院病人的离开,等待住院病人的进入,要想确定闲置病床的数量,需要知道各类病人离开医院的概率,由问题二可以得到这四类病人在进行完手术后的平均逗留时间,那么第类tii病人出院的概率定义为 pi
1 (11) p,iti
则可以利用数学期望描述出院的病人数,也即闲置的病床数 Eb()
4
(12) Ebpx(),,ii0,i1
(2) 住院时间区间的确定
等待病人也分为4类,即外伤、白内障患者(单眼)、白内障患者(双眼)以及其他眼疾患者,当有病人进行门诊时,必属于这4类中的1类。我们安排病床的规则遵循不同类别之间根据优先级进行排序,同类病人中采用先到先得的原则。按照这种规则,当来进行门诊时,所从属的集合类中的病人数有一定的范xxxi1围,极小值是0,极大值为。 Xi
根据附录中的数据,我们发现每天4类病人平均诊断人数基本上是一个均值,变化不大,故可以得到每天4类病人的比例,那么 qi
4
(13) Xxq,(),iii1,i0
则病人x的住院时间区间可表示为[,]。 tT00
5.3.2 模型三的求解
在前面的数据处理中得到4类病人的平均逗留时间,这样就得到各类病人每
12
天出院的概率,见下表。
表4 4类病人平均逗留时间及出院概率的情况
病人类型 1 2 3 4 平均逗留时间 8.04 17.90 21.07 23.92 出院概率 p0.1243 0.0558 0.0475 0.0418 i
统计数据得到,。 x,(8,7,22,42)x,(1,20,29,51)i0i1
这样可以计算得到=4.1832,即平均每天有4张闲置床位。对这四张床Eb()
位的安排,外伤患者优先得到住院的机会,即外伤患者当天就诊的话,第二天就能入院;其他的患者则根据优先级,以4天为一个周期。
下面以附录中的部分数据为例进行住院时间的预测。历史数据表明,外伤、白内障患者(单眼)、白内障患者(双眼)、其他疾病患者的人数比是0.158:0.206:0.235:0.401
白内障患者(双眼)2008-8-30进行门诊,最早的住院时间是=2008-8-31,t0由于每天都平均有4个床位空出来,患者每天都可以得到1个床位,根据问题二的规则,最晚的住院时间是=2008-9-6。同理进行分析,其他疾病患者2008-8-30T0
入院时,每天得到的平均床位2个,最早的住院时间是=2008-8-31,最晚的住t0
院时间是2008-9-3。
对4类患者进行分析,得到他们的住院时间区间。
表5 部分诊断病人入院时间区间
1 2 3 4
诊断时间 2008-8-30 2008-8-30 2008-8-30 2008-8-30
2008-8-31~ 2008-8-31~ 2008-8-31~ 入院时间区间 2008-8-31 2008-9-1 2008-9-6 2008-9-3
5.4 模型四的建立
5.4.1基于动态规划的计算机仿真
为了检验手术日期安排改动后,顾客的逗留时间等量的变化情况,我们基于模型二利用动态规划的计算机仿真模型对第一阶段的病人重新进行了病床的安排,部分结果见下表。
表6 周六周日不做手术仿真部分结果
序号 患病类型 门诊时间 入院时间 手术时间 出院时间
29 外伤 2008-7-16 2008-7-17 2008-7-18 2008-7-24
30 白内障双眼 2008-7-16 2008-7-18 2008-7-21 2008-7-26
31 视网膜疾病 2008-7-16 2008-7-17 2008-7-22 2008-8-1
32 白内障双眼 2008-7-16 2008-7-18 2008-7-21 2008-7-26
33 视网膜疾病 2008-7-16 2008-7-17 2008-7-22 2008-8-1 5.4.2 对此排队系统的评价
病人来到医院看病可以看成一个排队系统,住院接受治疗为病人接受医院的
13
“服务时间”,从门诊到入院的时间则为病人的等待时间。对于一般的排队系统,排队者都希望逗留时间(包括服务时间与等待时间)越短越好,对于该排队系统也不例外。利用问题一中的评价指标体系中的满意度函数来对此排队系统,()t2
进行评价,从而做出决策。
统计分配情况得病人的平均等待时间,而术前等待时间为t,1.56381
。则。进一步求得病人的满意度。 t,2.5671ttt,,,0.30.72.26611,,0.7491832122
而由问题二中对模型二的评价,在考虑周六、周日做手术的前提下求得的'。 ,,0.8034502
'由于,此时病人对于该排队系统的满意度较以前低,故而需要对医,,,22
院的手术时间安排做出相应的调整。
5.4.3 调整方案的确定
注意做双眼的病人两只眼的手术时间会有至少一天的间隔,但是不会超过5天。同时,为了保证病人的心理承受能力,两只眼的手术通常都应安排在同一周内。
记病人第一次手术时间为,第二次手术时间为。则白内障患者的手术FF12
时间安排可以是。IFFDDDDDDDDDDDD,{(,)|(,),(,),(,),(,),(,),(,)}12131415242535
对的其余5种安排利用模型二对病人的床位分配模型重新进行(,)(,)FFDD,1213
安排,最终求得所有病人在不同手术时间安排下的平均等待时间,进一步得到评价指标的值。各类数据如下表所示。 ,()t2
表7 所有病人在不同手术时间安排下的满意度
(,)FF(,)DD(,)DD(,)DD(,)DD(,)DD121415242535
t1.758389 2 1.610738 1.85906 1.627517 1
t2.305369 2.248322 2.291946 2.053691 2.228188 2
t 2.141275 2.173825 2.087584 1.995302 2.047987
,()t0.772725 0.766645 0.782654 0.799413 0.789895 2
将病人对6种手术安排时间所得床位分配方案的满意度表示在同一曲线上,如下图所示。
14
图6 满意度走势分布
由上图,可以直观的得到患者对方案的满意度为最大。故而最终手术(,)TT25
时间做出的调整为:将白内障手术时间调整至周二以及周五。且做双眼的病人先在周二做一只,再在周五做一只。
5.5 模型五的建立
5.5.1模型的准备
将白内障患者分为两类,得到5种分类,依次编号,则第1类患者至第5类分别表示:白内障患者(单眼)、白内障患者(双眼)、青光眼患者、视网膜疾病患者以及外伤患者。眼科也相应的分为5个科室。记第类病人的平均逗留时i
W间为,平均等待时间为,平均接受服务时间为。则 WTqisii
WWT,, (14) siqii
5
记第类病人的病床分配比例为,其中。则各类病人的病床数 ,,1,i,ii,i1
(15) SNi,,,,(1,2,,5)ii
5.5.2目标函数的确定
依题意,所求目标为所有病人平均逗留时间最短,则目标函数为
51 (16) WW,min,ssi5,i1
15
由分析可知,病人的逗留时间与所分配的床位数有关,下面通过排队论系统来研究两者之间的关系。下边以第类病人情形为例。 i
由问题的假设,病人流为泊松流,每天平均到达间隔时间为,并记每天到,i达间隔时间方差为。各病床的服务时间满足负指数分布,且它们的工作Var[],i
是相互独立的。单个病床的每天平均服务率为,即单位时间内被服务完的患者,i
数为,记每天服务率方差为。则与病人平均接受服务时间满足如,VarT[],Tiiii下关系式
1 (17) T,i,i
又由于系统中每个床位为并联工作,故此服务系统为系统。 MMS//i
设系统的状态为,即系统中有个第类病人的概率为(),nnPnS,0,1,2,,inii可以得到系统状态概率的平衡方程为
,,,PP,10ii, (18) (1)()(1)nPPnPnS,,,,,,,,,,,,,nininii1,1,
,()()SPPSPnS,,,,,,,,,,ininiinii1,1,,
求解此方程组,可得各状态概率为
S,1i111,,Sn,1i P,, (19) [()()],0nS,!!1,,,n,0i
1,,n(),PnS当,0i,n!,, P, (20) ,n11,n,(),PnS当,0i,nSi,SS!,,ii
,其中,表示系统的服务强度。 ,,S,i
排队等待住院的患者数为
,
LnSP,,() (21) ,qiinnS1,,i
由Little公式,顾客等待的时间为
LqiW, (22) qi,i
由式(14) (21) (22),可得病人的逗留时间与所分配的床位数的关系如下
16
,
()nSP,,in1nS,,i (23) WT,,sii,i
上述式子求解复杂,为了简化计算,考虑在系统达到负荷时的情形。
,i荷为 :。可近似认为系统在高负荷状态下,即记系统负LLT,,,iiii,i
时,系统的所有服务台(病床位)都被长期占有,因此整个SL,,0MMS//iii
Ti服务系统可以看作一个以为到达间隔,为服务时间的系统,高负MM//1,iSi
荷状态下系统顾客平均等待时间的近似解如下: MMS//i
2,,([][])SVarVarT,iiii (24) W,qi2()SSL,iii
5.5.3 约束条件的确定
由题意,病床总数为79张。则各类患者病床数应满足 N
5
(25) S,79,i,i1
根据医院的统计结果,做两只眼的白内障患者在所有白内障患者中大约占到60%,则在分配床位时该两类患者的床位数应满足如下比例
S40%21 (26) ,,S60%32
在实际生活中,等待时间总为非负值,分析式(4)可知,要使W,0,必须qi有。否则,当系统负荷超过病床的数目时,排队系统将达不到稳定的SL,,0ii
状态,队伍将越排越长。即
(27) SL,ii
5.5.4 模型五的确定
通过上述分析,得到使得所有病人在系统内的平均逗留时间最短的病床比例
分配模型,基于排队论的非线性规划模型:
255,,([][])SVarVarT,11iiiimin()WWT,,, (28) ,,ssii552()SSL,,,ii11iii
17
5,SN,,i,i,1,
S2,1, (29) st..,S32,
,SLi,,(1,2,,4)ii,Si,,Z(1,2,,4)i,
(1) 求解
,解得最优解后,利用相互比值可得病床比例分配安排。即白内障患者(单Si
,,,SSS312眼)所占床位数比例为:;白内障患者(双眼):;青光眼患者: ,NNN
,,SS54视网膜疾病患者; ,外伤患者: 。 NN
(2) 当时,模型的求解 N,79
确定:由,每类疾病床位服务系统负荷如下表: LLT,,iiii
表8 每类疾病床位服务系统参数 第类病人 1 2 3 4 5 i
,1.6 2.216216 1.054054 2.657859 1.018519 i
T5.23611 8.560976 10.487179 12.544554 7.036364 i
L8.377778 18.972972 11.054053 33.342107 7.166670 i
由上述分析可知,各排队系统在理论上所需床位的最小值为。而SL,ii55
。即在满足的约束条件下,理论所需床位为模型L,,78.9135879S,79,,ii,,ii11
的最优解。不然,若有某个系统床位减少,低于负荷值,将会导致队伍不断增长,
病人等待住院的时间也会不断增加,从而使得逗留时间变长。
综上分析,求得可行解有两组:
第一组:,,,,。 S,9S,19S,11S,33S,712345
第二组:,,,,。 S,8S,19S,11S,34S,712345
511在第一组解下求得所有病人平均逗留时间为,WW,,30.31104,ssi5,i1212W,35.86464WW,。可见。第一组分配比第二组优。 sss
18
最终求得各类病人病床分配比例为:。即白内障患者(单眼)9:19:11:33:7所占床位数比例为:11.39%,白内障患者(双眼):24.05%,青光眼患者: 13.92%,视网膜疾病患者: 41.77%,外伤患者: 8.87%。
六 模型的评价及改进
6.1 模型的评价
6.1.1 模型的优点
(1) 模型一从医院和病人两方面的利益出发,并以此为优化目标建立了双向评价指标体系,系统全面的对病床安排方案进行评价。在模型中定义了病床的有效利用指数和病人的满意度函数,综合了其他各种影响因素,对病床安排方案给医院和病人两方面带来的利益影响进行了有效刻画和评价。
(2) 模型二中根据各类病人手术时间、准备时间不同的特点,采用动态规划方法进行优化,最终给出了从星期一至星期天的每天各类病人安排顺序,有效地减少了术前的冗余时间,使得病床的利用率有所提升。
在对各类病人进行安排时,我们人为地引进“时间”因素,将决策安排视为多阶段决策问题,利用动态规划方法处理,易于确定全局最优解。
而在对第二天安排病人住院的过程中,利用了计算机仿真技术,实时模拟病人就诊、入院、手术、出院的全过程,使得我们能够追踪到整个住院系统住院人数、等待住院人数、空余床位等的变化情况。
(3) 模型五中将病床分配问题考虑为多科室排队系统问题,在一个科室中,由排队论知识可以建立病床数与平均逗留时间的函数关系,而在多科室这个系统中,以所有病人平均逗留时间最短为目标建立了非线性规划模型,最终求得各科室最优的病床数。
6.1.2 模型的缺点
(1) 在本题中,排队论的应用很好地联系了病床数与平均逗留时间,简化了问题的求解,但是它只是简单的从病人的满意度来对手术安排时间进行衡量,而没有考虑医院方面的收益。
(2) 非线性规划函数求解较为复杂,而此模型又引入了排队论,使得约束条件增加,有可能不存在可行解。
6.2 模型的改进
(1) 模型一在定义满意度函数时,将门诊到入院时间和入院到进行手术前的时间综合起来进行考虑,这样的话就削弱了两个时间单独的影响力,因此为了更好的确定满意度函数,可以将这两个时间分别进行讨论,建立两个指标。
(2) 问题三是一个预测问题,病人的状态是离散的、随机的,医院住院安排是一个动态系统,每个时刻不停地有患者的流入、流出,因为该问题没有时间的后效性,因此可以利用马尔科夫链来描述这种动态转移过程。首先需要确定系统中患者的状态集,再计算出各个状态之间的转移概率,这样能得到每种状态下,住院人数和等待住院人数的数量。
利用本题算出的闲置床位数量,再根据病床的现有量和变化量,然后由每天处于不同状态患者的人数,得到住院时间的安排。
19
七 参考文献
[1] 姜启源,谢金星,叶俊,数学模型,北京:高等教育出版社,2003.8 [2] 《运筹学》教材编写组,运筹学,北京:清华大学出版社,2005.6 [3] 刘次华,随机过程,武汉:华中科技大学出版社,2008.8 [4] 孙晚华,关于动态规划顺序求解法的教学探讨,北京交通大学学报(社会科学版),3(1):62-64,2004.3
[5] LAWRENCE R. RABINERA ,Tutorial on Hidden Markov Models and Selected
Applications in Speech Recognition,77(2):257-259,1989.2 [6] 张国通,杜刚,蒋志斌,苗瑞,苏强,一种动态自适应医院门诊排队模式,上海交通大学学报,41(9):1546-1549,2007.9
20
附件1 计算机仿真程序
// CUMCM09.cpp : Defines the entry point for the console application.
//
#include
#include
#include
#include
using namespace std;
class Patient //主类病人
{
public:
long id; //病人ID
string type; //得病类型
long fromDealToMoveIn; //从门诊到入院经过的时间
long fromMoveInToOperation; //从入院到手术经过的时间
long fromOperationToMoveOut; //从手术刀出院经过的时间
long dealDate; //门诊时间
long inDate; //入院时间
long operationDate; //手术时间
long outDate; //出院时间
bool isMoveIn; //判断是否入院
bool isOperation; //判断是否手术
bool isMoveOut; //判断是否出院
Patient(); //构造函数
void moveIn(); //病人入院
void moveOut(); //病人出院
void doOperation(); //病人做手术 };
//白内障白内障(双眼)青光眼视网膜疾病外伤五种疾病队列
vector v0,v1,v2,v3,v4,vsum;
long fromOperationToMoveOut[]={3,5,8,10,6}; //五种疾病手术后住院观察时间 long fromMoveInToOperation[]={2,2,3,3,1}; //五种疾病手术前等待时间
ifstream inFile("in.txt"); //输入文件此处采用第一部分数据 ofstream outFile("out.txt",ios_base::out); //输出文件病人诊断 ofstream xlsFile("xls.txt",ios_base::out); //输出文件各个病人详细情况
21
int dealSign[]={0,0,0,0,0}; //标记队列门诊处理完成位置 int moveInSign[]={0,0,0,0,0}; //标记队列入院处理完成位置 int operationSign[]={0,0,0,0,0}; //标记队列手术处理完成位置 int moveOutSign[]={0,0,0,0,0}; //标记队列出院处理完成位置 //全局时间,按计算机处理习惯2008/7/13 换算为39642,weekDay为时表示周日 long globleTime=39642,weekDay=0;
long bedsTotal=79; //全局变量,标记病床数
Patient::Patient()
{
type="";
dealDate=0;
inDate=0;
outDate=0;
operationDate=0;
fromDealToMoveIn=0;
fromMoveInToOperation=0;
fromOperationToMoveOut=0;
isMoveIn=0;
isOperation=0;
isMoveOut=0;
}
void Patient::moveIn() //病人入院
{
inDate=globleTime;
fromDealToMoveIn=inDate-dealDate;
bedsTotal--;
outFile<<" "<<"Patient "<=7)
{
weekDay=weekDay%7;
}
outFile<<"Date:"<=1&&(weekDay==1||weekDay==3))
{
v0[i].doOperation();
moveInSign[0]++;
}
}
}
}
//术前准备时间超过天并且当天是周一,白内障(双眼)病人进行手术
for (int i=moveInSign[1];i=1&&weekDay==1)
{
v1[i].doOperation();
moveInSign[1]++;
}
}
}
}
//术前准备时间超过天并且当天既不是周一也不是周三,青光眼病人进行手术
for (int i=moveInSign[2];i=2&&weekDay!=1&&weekDay!=3)
{
v2[i].doOperation();
moveInSign[2]++;
}
}
}
}
//术前准备时间超过天并且当天既不是周一也不是周三,视网膜疾病病人进行手术
for (int i=moveInSign[3];i=2&&weekDay!=1&&weekDay!=3)
{
v3[i].doOperation();
moveInSign[3]++;
}
}
}
}
//术前准备时间超过天,外伤病人进行手术
for (int i=moveInSign[4];i=1)
{
v4[i].doOperation();
moveInSign[4]++;
}
}
}
}
//--------------------------------搬出过程--------------------------------//
//术后观察时间超过天,白内障病人出院
for (int i=operationSign[0];i=3)
{
v0[i].moveOut();
outTotal++;
operationSign[0]++;
}
}
//术后观察时间超过天,白内障(双眼)病人出院
for (int i=operationSign[1];i=5)
{
v1[i].moveOut();
27
outTotal++;
operationSign[1]++;
}
}
//术后观察时间超过天,青光眼病人出院
for (int i=operationSign[2];i=8)
{
v2[i].moveOut();
outTotal++;
operationSign[2]++;
}
}
//术后观察时间超过天,视网膜疾病病人出院
for (int i=operationSign[3];i=10)
{
v3[i].moveOut();
outTotal++;
operationSign[3]++;
}
}
//术后观察时间超过天,外伤病人出院
for (int i=operationSign[4];i=6)
{
v4[i].moveOut();
outTotal++;
operationSign[4]++;
}
}
//--------------------------------搬入过程--------------------------------//
//周一和周二,能够搬入的病人及其优先级为(在前为优先级更高):
//外伤白内障青光眼视网膜疾病
if (weekDay==1||weekDay==2)
{
while (v4.size()>=dealSign[4]+1&&bedsTotal>0)
{
v4[dealSign[4]].moveIn();
dealSign[4]++;
}
28
while (v0.size()>=dealSign[0]+1&&bedsTotal>0)
{
v0[dealSign[0]].moveIn();
dealSign[0]++;
}
while (v2.size()>=dealSign[2]+1&&bedsTotal>0)
{
v2[dealSign[2]].moveIn();
dealSign[2]++;
}
while(v3.size()>=dealSign[3]+1&&bedsTotal>0)
{
v3[dealSign[3]].moveIn();
dealSign[3]++;
}
}
//周三和周四,入院的病人及其优先级为(在前为优先级更高):
//外伤青光眼视网膜疾病
else if (weekDay==3||weekDay==4)
{
while(v4.size()>=dealSign[4]+1&&bedsTotal>0)
{
v4[dealSign[4]].moveIn();
dealSign[4]++;
}
while (v2.size()>=dealSign[2]+1&&bedsTotal>0)
{
v2[dealSign[2]].moveIn();
dealSign[2]++;
}
while (v3.size()>=dealSign[3]+1&&bedsTotal>0)
{
v3[dealSign[3]].moveIn();
dealSign[3]++;
}
}
//周五,入院的病人及其优先级为(在前为优先级更高):
//外伤青光眼视网膜疾病白内障(双眼)白内障
else if (weekDay==5)
{
while (v4.size()>=dealSign[4]+1&&bedsTotal>0)
{
v4[dealSign[4]].moveIn();
dealSign[4]++;
29
}
while (v2.size()>=dealSign[2]+1&&bedsTotal>0)
{
v2[dealSign[2]].moveIn();
dealSign[2]++;
}
while(v3.size()>=dealSign[3]+1&&bedsTotal>0)
{
v3[dealSign[3]].moveIn();
dealSign[3]++;
}
while(v1.size()>=dealSign[1]+1&&bedsTotal>0)
{
v1[dealSign[1]].moveIn();
dealSign[1]++;
}
while(v0.size()>=dealSign[0]+1&&bedsTotal>0)
{
v0[dealSign[0]].moveIn();
dealSign[0]++;
}
}
//周六或周日,入院的病人及其优先级为(在前为优先级更高):
//白内障(双眼)白内障外伤青光眼视网膜疾病
else if (weekDay==6||weekDay==0)
{
while(v4.size()>=dealSign[4]+1&&bedsTotal>0)
{
v4[dealSign[4]].moveIn();
dealSign[4]++;
}
while(v1.size()>=dealSign[1]+1&&bedsTotal>0)
{
v1[dealSign[1]].moveIn();
dealSign[1]++;
}
while (v0.size()>=dealSign[0]+1&&bedsTotal>0)
{
v0[dealSign[0]].moveIn();
dealSign[0]++;
}
while(v2.size()>=dealSign[2]+1&&bedsTotal>0)
{
v2[dealSign[2]].moveIn();
30
dealSign[2]++;
}
while(v3.size()>=dealSign[3]+1&&bedsTotal>0)
{
v3[dealSign[3]].moveIn();
dealSign[3]++;
}
}
}
int main()
{
int IsOver=0;
while (1)
{
//按照疾病类型将当天病人加入对应队列
while (1)
{
Patient t;
inFile>>t.id>>t.type>>t.dealDate;
if (t.type=="END")
{
IsOver=1;
break;
}
if (t.dealDate>globleTime)
{
break;
}
vsum.push_back(t);
if (t.type=="白内障")
{
v0.push_back(t);
}
else if (t.type=="白内障双眼")
{
v1.push_back(t);
}
else if (t.type=="青光眼")
{
v2.push_back(t);
}
else if (t.type=="视网膜疾病")
31
{
v3.push_back(t);
}
else
{
v4.push_back(t);
}
}
if (IsOver==1)
{
break;
}
//根据当天门诊病人病况,已有队列病人情况,决定下一天(明天)的入院情况
dealEvents();
}
//输出,所有病人的序号,得病类型,门诊时间,入院时间,手术时间,出院时间
for (int i=0;i