2009年国赛高教杯数学建模
B题 眼科病床的合理安排
医院就医排队是大家都非常熟悉的现象,它以这样或那样的形式出现在我们面前,例如,患者到门诊就诊、到收费处划价、到药房取药、到注射室打针、等待住院等,往往需要排队等待接受某种服务。
我们考虑某医院眼科病床的合理安排的数学建模问题。
该医院眼科门诊每天开放,住院部共有病床79张。该医院眼科手术主要分四大类:白内障、视网膜疾病、青光眼和外伤。附录中给出了2008年7月13日至2008年9月11日这段时间里各类病人的情况。
白内障手术较简单,而且没有急症。目前该院是每周一、三做白内障手术,此类病人的术前准备时间只需1、2天。做两只眼的病人比做一只眼的要多一些,大约占到60%。如果要做双眼是周一先做一只,周三再做另一只。
外伤疾病通常属于急症,病床有空时立即安排住院,住院后第二天便会安排手术。
其他眼科疾病比较复杂,有各种不同情况,但大致住院以后2-3天内就可以接受手术,主要是术后的观察时间较长。这类疾病手术时间可根据需要安排,一般不安排在周一、周三。由于急症数量较少,建模时这些眼科疾病可不考虑急症。
该医院眼科手术条件比较充分,在考虑病床安排时可不考虑手术条件的限制,但考虑到手术医生的安排问题,通常情况下白内障手术与其他眼科手术(急症除外)不安排在同一天做。当前该住院部对全体非急症病人是按照FCFS(First come, First serve)规则安排住院,但等待住院病人队列却越来越长,医院方面希望你们能通过数学建模来帮助解决该住院部的病床合理安排问题,以提高对医院资源的有效利用。
问题一:试分析确定合理的评价指标体系,用以评价该问题的病床安排模型的优劣。
问题二:试就该住院部当前的情况,建立合理的病床安排模型,以根据已知的第二天拟出院病人数来确定第二天应该安排哪些病人住院。并对你们的模型利用问题一中的指标体系作出评价。
问题三:作为病人,自然希望尽早知道自己大约何时能住院。能否根据当时住院病人及等待住院病人的统计情况,在病人门诊时即告知其大致入住时间区间。
问题四:若该住院部周六、周日不安排手术,请你们重新回答问题二,医院的手术时间安排是否应作出相应调整?
问题五:有人从便于管理的角度提出建议,在一般情形下,医院病床安排可采取使各类病人占用病床的比例大致固定的方案,试就此方案,建立使得所有病人在系统内的平均逗留时间(含等待入院及住院时间)最短的病床比例分配模型。
整体求解过程概述(摘要)
本文在研究眼科病床的安排时,首先分析病人实际情况和心理,采用余弦分布时间满意度函数计算出病人对入院等待时间和术前等待时间的满意度;然后根据日平均入院人数考虑医院的利益,从而建立医院利益指数。最后由这两个数据给出综合评价指数和策略合理标准,对病床安排策略进行评价。当综合评价指数大于0.9时,策略合理。
问题一:对于题中FCFS策略,病人的平均满意度为0.81(0.8以上为满意),但单双眼白内障病人满意度均不到0.8,医院利益指数为0.78,综合评价指数为0.8,方案不合理。
问题二:我们结合病人的公平性和优先性,在原题设条件下,提出“引入时延的FCFS改进算法”:对手术时间固定的白内障病人进行时延,再把当天及以前余留病人一起按照FCFS原则和病人优先级(外伤>白内障双眼>白内障>青光眼、视网膜疾病)进行排序,再安排次日床位。经过对病床的重排,病人平均满意度达到0.89,医院利益指数为0.95,综合指数为0.92>0.9,因此新策略比较合理。
问题三:当病床安排策略已定的时候,影响一个病人入院时间的就是在他之前的还未出院的病人(正在住院,以及排在他之前等待入院的病人)的术后恢复时间的长短。我们根据统计规律找出各类病人回复时间波动范围,对未出院本人取最小、最大值,对在当前病人之后来门诊的病人采取轮盘赌算法根据统计规律随机产生,由此求出当前病人的大致入院时间范围。
问题四:取消周六、日的手术时间后,按照原模型求解,发现综合评价指数降为0.89,不太合理。由此提出调整白内障手术的时间,经分析调整为周二、周四时,模型一的策略最优,且合理。
问题五:先根据一段时间内某类病人每天占用病床数之和除以这段时间,得到该类病人的预测床位数。在此基础上微调,找到使所有病人平均逗留时间最短的病床分配比例为:{外伤,10.1%,8},{白内障,13.9%,11},{白内障(双眼),20.3%,16},{青光眼,12.7%,10},{视网膜疾病,43.0%,34}。 模型拓展,对算法一进行改进,提出“动态延时因子EDD算法”。将每天排队病人按照其门诊时间加上当天虚拟入院时间后的日期进行排序后入院。改进后优化程度明显,病人平均满意度为0.93,医院利益指数为0.97,综合评价指数为0.95,合理。因此算法二的策略为最优病床安排策略。
模型假设:
1) 病人的满意度只受入院前等待时间和手术前等待时间影响。
2) 在一定的时间间隔内,来到医院的病人数量只与这段时间间隔的长短有关,而与这段时间间隔的起始时刻无关。
3) 病人的到达率与病床占用程度无关,无论住院部中有多少病人,病人的到达率不变。
4) 病人出院当天即可安排另一病人入院。
5) 每天都有一定数量的病人出院,确保前一天问诊的外伤病人有床位。
问题分析:
“三长一短”(挂号时间长、候诊时间长、交费时间长、看病时间短)一直是中国各大医院的顽疾,也成为影响病人满意度的主要因素。 现有某医院住院部采取FCFS的方案安排病人住院,却使等待病人越来越多。为了使该医院的眼科病人尽快住院,并得到合理安排的床位,我们首先将设计一种评价体系,找出现有安排方案的优劣,然后设计出一套合理的病床安排方案,以解决住院部的排队难题。
通常,医院影响病人满意度的因素主要有:等待及治疗时间、就医环境、技术水平、医师水平、护士态度、收费标准等等。在此题中,可以看作除等待时间以外,病人对于其他条件的满意度相同。 但是对于不同的病人,由于病情不同,最长的等待时间也不同。根据已知数据(即采取FCFS策略)分析可得:
由上图可知,外伤病人属于急诊,最多等待1天就必须住院治疗,而白内障、青光眼和视网膜疾病的病人则对等待时间要求不太严格,等待时间可以相对较长。因此根据入院等待时间可分为两个公式计算病人第一满意度。 再根据题目要求可知,手术前准备时间为:外伤1天;白内障12天;青光眼和视网膜疾病23天。因此根据手术等待时间用三个公式计算病人第二满意度。 我们采用病人两种满意度的均方根的值作为病人的总体满意度。 综上所述,因为影响第一满意度的入院等待时间直接造成等待的病人数变化,而影响第二满意度的手术等待时间会对病床的有效利用率产生影响,因此,可以用第一满意度和第二满意度来评价病床安排策略的优劣。
一个优秀合理的床位安排策略不仅能使病人有较高的满意度,并且还可以给医院带来更多的利益。 因此从医院角度考虑,如果让病人长时间等待入院,时间太长可能会造成病人流失,使医院的利益减少。反之,如果能合理安排床位,提高病床的有效利用率,这样在相同时间内,可以接待更多的病人,从而提高医院的利益。 我们通过分析医院日平均接待入院人数,用理想化的接待人数和现实接待人数的比值来表示医院的利益指数H。通过H,就可以判断不同策略对医院利益的影响。
根据题目分析可知,外伤病人属于急诊,必须第二天立即入院治疗,所以有绝对的最高优先权。又经过分析可知,每天的外伤患者很少,他们的提前入院不会对后面排队的病人满意度有太大的影响,因此在这里采用优先级队头服务(head of line, HOL )原则,每天都首先满足外伤病人。 白内障患者手术日期固定在周一和周三,且术前准备时间只有1至2天,因此安排的入院时间要尽量靠近手术日期。而其他病人时间相对灵活,且术前准备时间有2至3天,分析可知无论在周几入院,都可以在最长术前准备时间之内手术。 通过对不同病人的入院时间分析,我们发现,如果像原FCFS策略一样的话,会导致部分白内障病人住院很长时间才手术,造成了床位的浪费。因此提出“引入时延的FCFS改进算法”,每天对排队的白内障患者的门诊时间进行加上时延再和其他病人的门诊时间进行排序,由此按照FCFS规则和病人的优先级,确定次日的入院病人的次序。 每天各类病人的时延天数是根据其最佳入院时间来确定的。例如白内障病人的手术时间为周一和周三,术前准备时间是1~2天,因此最佳入院时间是周一、周二、周六和周日。在非最佳入院时间时,我们要对其加上一个时延,不让其过早入院,而把床位让给处在最佳入院时间的病人,并且离最佳入院时间越远,时延越大,使其尽量在靠近最佳入院时间的时候入院。
模型的建立与求解整体论文缩略图
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
部分程序代码:
clear
clc
a=[1 0 0 1 1 2 1 2 2 1 2 4 8 11 11 9 9 8 7 12 6 6 5 9 8 15 20 9 6 2 6 9
8 13 6 4 7 10 4 8 18 11 6 3 8 12 10 14 2 6 2 5 9 13 17 10 4 5 13 7];
b=[0 0 0 0 0 1 0 0 1 0 0 2 1 1 3 2 5 1 2 5 2 2 4 8 7 15 20 9 6 2 6 9 8
13 6 4 7 10 4 8 18 11 6 3 8 12 10 14 2 6 2 5 9 13 17 10 4 5 13 7];
c(1)=1;
for i=2:60
c(i)=0;
c(i)=a(i)+c(i-1)-b(i);
end
x=1:60;
stem(x,c);
title('病房人数统计表')
xlabel('日期')
ylabel('病房人数')
clear
clc
x=[0.91 1 12.67 5.24
1.04 1 12.51 8.56
1.28 1 12.54 12.54
0.49 1 12.26 10.49
0.7 1 1 7.04]
for i=1:5
for j=3:4
x(i,j)=100/x(i,j);
end
end
x
for j=1:4
a(j)=0;
for i=1:5
a(j)=a(j)+x(i,j)^2;
end
a(j)=sqrt(a(j));
end
a
for i=1:5
for j=1:4
z(i,j)=x(i,j)/a(j);
end
end
z
for i=1:4
z1(i)=max(z(:,i));
z2(i)=min(z(:,i));
end
z1
z2
w=[0.4 0.15 0.3 0.15];
for i=1:5
d1(i)=0;
d2(i)=0;
for j=1:4
d1(i)=d1(i)+(w(j)*(z(i,j)-z1(j)))^2;
d2(i)=d1(i)+(w(j)*(z(i,j)-z2(j)))^2;
end
d1(i)=sqrt(d1(i));
d2(i)=sqrt(d2(i));
end
d1
d2
for i=1:5
c(i)=d2(i)/(d1(i)+d2(i));
end
c
q=[72 82 101 39 55];
q1=q/sum(q)
cc=sum(c.*q1)