全国大学生数学建模竞赛--范例
发布时间:2020-10-15 22:00:12
发布时间:2020-10-15 22:00:12
2009高教社杯全国大学生数学建模竞赛
承 诺 书
我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括、电子、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。
我们参赛选择的题号是(从A/B/C/D中选择一项填写):
我们的参赛报名号为(如果赛区设置报名号的话):
所属学校(请填写完整的全名):
参赛队员 (打印并签名) :1.
2.
3.
指导教师或指导教师组负责人 (打印并签名):
日期: 年 月 日
赛区评阅编号(由赛区组委会评阅前进行编号):
2009高教社杯全国大学生数学建模竞赛
编 号 专 用 页
赛区评阅编号(由赛区组委会评阅前进行编号):
赛区评阅记录(可供赛区评阅时使用):
评 阅 人 | ||||||||||
评 分 | ||||||||||
备 注 | ||||||||||
全国统一编号(由赛区组委会送交全国前编号):
全国评阅编号(由全国组委会评阅前进行编号):
眼科病床的合理安排
病床是医院的重要卫生资源,其使用情况是反映医院工作效率的重要指标,合理分配床位、提高病床使用率对于充分利用医疗资源、提高医院的两个效益有着十分重要的意义。
本题针对某医院眼科病床分配中存在的不合理现象,让我们建立一个合理的病床安排模型,以解决病床的最优分配问题,从而提高对医院资源的有效利用。
针对问题一,本文制定的指标评价体系包括门诊相关指标集(病人平均等待时间、门诊等待平均队长、病人平均满意度)和病床相关指标集(出院者平均住院日数、病床平均工作日、病床平均周转率、实际病床利用率)。为了能够全面地评价出模型的优劣,本文采用目前普遍使用的密切值法、TOPSIS法和RSR法等综合评价方法,并对应建立了三个评价模型,以得出更为科学合理的结论。
针对问题二,本文建立了以病床需求数为状态转移变量、以各类病人的病床安排数为决策变量的动态规划模型。模型中,充分考虑了观测期病人平均等待时间、病床平均周转率、病床利用率和潜在流失率等指标,且在制定寻优策略时,引入了病人满意度量化函数和优先级函数,使得模型更加合理。通过Matlab对该模型求解,得出了次日病床安排方案(结果见表4)。
综合评价模型时,以该医院目前的病床安排方案和我国医院通用的病床安排方法为比较对象,借助上述三种评价方法和模型,进行了综合评价比较,从综合评价结果来看,本文的模型相对较优(评价结果见表9)。
针对问题三,本文既充分考虑了如何缩短病人平均等待时间和提高病床利用率,又兼顾了公平原则,根据病症的不同和就诊病人到院的顺序制订了优先服务策略,给出了每个病人相应的入住时间区间(见P18)。
针对问题四,由于住院部周六和周日不安排手术,对某些类型病人的病床安排产生了一定的影响,因此我们对问题二中模型的优先级函数进行了相应的调整,并利用进行了求解(结果见表10)。
为了判断手术安排时间是否改变,本文根据问题一的评价方法和模型对修改后的模型进行了综合评价,从评价结果得知,手术安排时间应该做相应的调整。
针对问题五,为了使所有病人在系统的平均逗留时间(含等待入院及住院时间)最短,本文建立了以其为目标函数且带约束条件的非线性规划模型,并利用了Lingo软件对其进行求解,得出的结论是:分配给外伤、白障(双眼)、白障(单眼)、青光眼、视网膜疾病等各类型病人的床位数依次为:8、16、12、21、22,分别占总床数的比例为:10.13%、20.25%、15.19%、26.58%、27.85%。
最后,本文对所建模型的优点和缺点进行了客观的评价,认为本文研究的结果在实际医院病床安排中有一定的参考价值。
关键词: 病人平均等待时间;实际病床利用率;RSR法;满意度量化函数;动态规划模型;非线性规划
医院就医排队是大家都非常熟悉的现象,它以这样或那样的形式出现在我们面前,例如,病人到门诊就诊、到收费处划价、到药房取药、到注射室打针、等待住院等,往往需要排队等待接受某种服务。
我们考虑某医院眼科病床的合理安排的数学建模问题。
该医院眼科门诊每天开放,住院部共有病床79。该医院眼科手术主要分四大类:白障、视网膜疾病、青光眼和外伤。附录中给出了2008年7月13日至2008年9月11日这段时间里各类病人的情况。
白障手术较简单,而且没有急症。目前该院是每周一、三做白障手术,此类病人的术前准备时间只需1、2天。做两只眼的病人比做一只眼的要多一些,大约占到60%。如果要做双眼是周一先做一只,周三再做另一只。
外伤疾病通常属于急症,病床有空时立即安排住院,住院后第二天便会安排手术。
其他眼科疾病比较复杂,有各种不同情况,但大致住院以后2-3天就可以接受手术,主要是术后的观察时间较长。这类疾病手术时间可根据需要安排,一般不安排在周一、周三。由于急症数量较少,建模时这些眼科疾病可不考虑急症。
该医院眼科手术条件比较充分,在考虑病床安排时可不考虑手术条件的限制,但考虑到手术医生的安排问题,通常情况下白障手术与其他眼科手术(急症除外)不安排在同一天做。当前该住院部对全体非急症病人是按照FCFS(First come, First serve)规则安排住院,但等待住院病人队列却越来越长,医院方面希望你们能通过数学建模来帮助解决该住院部的病床合理安排问题,以提高对医院资源的有效利用。
问题一:试分析确定合理的评价指标体系,用以评价该问题的病床安排模型的优劣。
问题二:试就该住院部当前的情况,建立合理的病床安排模型,以根据已知的第二天拟出院病人数来确定第二天应该安排哪些病人住院。并对你们的模型利用问题一中的指标体系作出评价。
问题三:作为病人,自然希望尽早知道自己大约何时能住院。能否根据当时住院病人及等待住院病人的统计情况,在病人门诊时即告知其大致入住时间区间。
问题四:若该住院部周六、周日不安排手术,请你们重新回答问题二,医院的手术时间安排是否应作出相应调整?
问题五:有人从便于管理的角度提出建议,在一般情形下,医院病床安排可采取使各类病人占用病床的比例大致固定的方案,试就此方案,建立使得所有病人在系统的平均逗留时间(含等待入院及住院时间)最短的病床比例分配模型。
1)假设医院床位数不发生变化,在考虑期间没有临时床位的增加;
2)假设附录所给数据真实可靠;
3)假设不存在当天门诊病人当天入院的情况;
4)假设每天就诊的各类病人数是随机的,不受特殊情况的影响;
5)假设同一病人同一天不会同时患有两种疾病。
序号 | 符号 | 符号说明 |
1 | 第天安排给第类病人的病床数量 | |
2 | 第天等待队列中的第类病人数 | |
3 | 第天新到的第类病人数 | |
4 | 第天第类疾病第个病人的到达时间 | |
5 | 病人期总等待时间 | |
6 | 期病床平均周转率 | |
7 | 期病床使用率 | |
8 | 潜在病人流失率 | |
问题一要求建立合理的评价指标体系,用来评价病床安排模型的优劣。
制定评价指标体系是模型评价的基础,它由评价指标集的识别和指标体系递阶结构的建立两部分组成。
为了使模型评价指标体系全面地反映出模型的性能,尽可能地做到科学合理,且符合实际情况,所以必须认真分析问题的组成和建模目标。从所给信息来看,本题既包括眼科门诊病人的类型、门诊时间,又包括病人入院时间、手术时间和出院时间。从目标上看,本题要求建立病床安排模型。因此制定指标评价体系时,除了采用医疗机构通用的规性指标外,还应该充分考虑到病人门诊等待时间和住院时间等,从而制定科学合理的指标评价体系。
模型评价时,本文结合目前给定的病床安排数据和我国当前一般医院的实际情况,采用常用的密切值法、TOPSIS法和RSR法(秩和比法)三种综合评价法,同时进行综合比较评价,从而得出更为科学准确的结论。
本题评价指标体系制定的难点在于医院安排受到许多因素的影响,这些因素又多具有交叉重复,为了使评价指标体系全面客观、科学合理,本文借鉴专家知识经验和医疗机构的通用指标,结合附录中所给的数据,制定了两类指标[1-5]:
一类为门诊相关指标,包括门诊病人平均等待时间、门诊等待平均队长、病人平均满意度;
二类为病床相关指标,包括出院者平均住院日数、病床平均工作日、病床平均周转率、实际病床利用率。
指标递阶次序按上述指标排列先后次序从低到高。
本文的评价对象为问题二中建立的病床安排模型,评价的目的是针对上述评价指标,采用合理的综合评价方法对该医院眼科原有的病床安排方法和所建模型中病床的安排策略进行综合对比分析,从而评价病床安排模型的优劣,为该医院眼科病床的安排提供决策依据。
由于医院病床的安排受到许多因素的交叉作用和影响,要全面、准确、客观、简便地评价一个病床安排模型的优劣,选择合适的综合评价方法显得尤为重要。
目前医疗机构经常采用的综合评价方法有密切值法、TOPSIS法、RSR法(秩和比法)等。其中密切值法作为一种综合评价方法,能够准确合理地评价医院工作质量,其计算方法简便,结果直观可靠。TOPSIS法具有计算简便、结构合理和应用灵活的特点。RSR法也是一种综合评价方法,它以非参数法为基础,对指标的选择无特殊要求,综合能力强,可显示微小变动,适用于各种对象,且简单易行,使用方便。这些方法不仅可用于医院之间的比较,还可用于医院某部门不同病床安排模型之间的比较。
一般来讲,用上述三种方法之一即可实现对三个对象的评价,但为了使评价的结果更加全面准确,本文利用三种方法分别进行综合评价,从而得出更为科学的评价结论。
1、评价对象
本文选取该医院病床的安排方法、本文欲建立的病床安排模型、一般医院病床安排的统计数据作为评价比较对象。为了便于叙述,对各评价对象进行编号,代号如下:
——该医院原有的病床安排模型;
——本文欲建立的病床安排模型;
——一般医院的病床安排模型。
2、评价指标
根据对问题一的分析,为了使评价指标体系全面客观、科学合理,本文选取了七个综合评价指标,并把它们分为高优指标和低优指标:门诊病人平均等待时间(低优)、门诊等待平均队长(低优)、病人平均满意度(高优)、出院者平均住床日数(低优)、平均病床工作日(高优)、病床平均周转率(高优)、实际病床利用率(高优),具体数据可表示如下:
上式中,,分别表示I、II、III评价对象。
设由三个评价对象的各评价指标组成的原始数据矩阵如表1所示:
表1 原始数据矩阵 | |||||||
模型 | |||||||
低优 | 低优 | 高优 | 低优 | 高优 | 高优 | 高优 | |
采用密切值法、Topsis法和RSR法对上述三种病床安排模型优劣进行综合评价,由于评价对象的各指标值需在问题二中确定,因此这里仅给出各种评价方法的评价模型,综合评价结果将在问题二的模型建立和求解之后给出。各综合评价模型建立的具体步骤如下:
1、密切值法
(1)建立原始数据矩阵
因有3个评价对象,每个对象有7个评价指标,故得原始数据矩阵如下:
(1)
(2)建立标准化指标矩阵
因为要使评价结果更为合理,需将矩阵中各项指标的原始数据依据下列公式进行标准化处理:
(2)
其中,为第个评价对象的第个指标标化值,表示各评价对象,为各评价指标的顺序。
设高优指标为正向指标,低优指标为负向指标,当评价指标为正向指标时取正值;当评价指标为负向指标时取负值(即),从而可将矩阵转化为标准化指标矩阵(即正向指标矩阵)。
(3)确定“最优点”和“最劣点”
根据标准化指标矩阵中各列的最大值和最小值建立最优点和最劣点。
(3)
(4)
其中,
(4)计算各评价对象到“最优点”与“最劣点”的距离
(5)
(6)
(5)计算各模型的密切值
(7)
其中,。
当密切值越小时,表明该模型与“最优点”关系越密切,与“最劣点”关系越疏远,即质量越高。时,病床利用率最高,即为“最优点”。
2、Topsis法
(1)建立原始数据矩阵
建立一个3行7列矩阵同公式(1)。
(2)原始数据同趋势化
将原始数据低优指标(、、)采用倒数法转化为高优指标。
(3)数据的归一化
根据下列公式对同趋势化后的数据进行归一化处理,从而得到归一化矩阵:
(8)
其中,是原高优指标,,。
(9)
其中,为原低优指标的倒数值,,。
(4)确定各指标最优向量与最劣向量
根据矩阵Z中各列的最大值和最小值建立最优向量和最劣向量矩阵。
(10)
(11)
(5)计算各评价对象的指标值与最优值、最劣值的距离
根据下列公式进行求解:
(12)
(13)
(6)计算各评价对象的指标值与最优值的相对接近程度
根据下列公式计算值:
(14)
其中,值越接近于1说明评价对象越接近于最优值;值越接近于0说明评价对象越接近于最劣值。
3、RSR法
(1)编秩
选取原始数据矩阵如表1,并分别将各项指标由优至劣编秩,指标值相同者取平均秩次,具体编秩方法如下:
高优指标:病人平均满意度(高优)、平均病床工作日(高优)、病床平均周转率(高优)、实际病床利用率(高优),编秩方法为:最大值编以最高秩次,次大值编以,…,最小值编以1。
低优指标:门诊病人平均等待时间(低优)、门诊等待平均队长(低优)、出院者平均住床日数(低优)。编秩方法为:最大值编以1,次大值编以2,…,最小值编以。
(2)计算值
该问题有7个评价指标,3个评价对象,因此的计算公式为:
(15)
其中,为第行第列元素的秩次,表示各评价对象,为各评价指标的顺序。
(3)确定分布
根据问题二的求解,将三种模型的病床利用率值由小到大排列起来,计算向下累计频率,并求其所对应的概率单位值。
(4)计算回归方程
经相关回归分析,值与高度线性相关。以为自变量,值为因变量可,计算回归方程:。
表2 RSR计算表 | ||||||||
模型 | ||||||||
I | ||||||||
II | ||||||||
III | ||||||||
(5)分档排序结果:
根据回归方程确定分档界值,按最佳分档得到分档排序结果。
借助上述三个方法的评价模型,本文可以对三个评价对象进行综合比较,从而得出相应的评价结论。
以上三种科学的评价方法对资料无特殊要求,直观、可靠、简便易行,有较高的使用价值,可以为管理者提供科学的决策信息,亦广泛应用于医疗评价问题。TOPSIS法对于原始资料信息利用最为充分,但不能进行分档,而RSR好相反,密切法操作简单但不够精确,三种方法结合使用,有利于提高统计分析的效能,其结果比较如表9所示。
上述评价模型建立后,可以在第二个问题中予以使用。
本问题要求在已知住院部当前信息的条件下建一个合理的病床安排模型。
由问题一确定的评价指标体系可知,一个合理的病床安排模型应该满足病人平均等待时间最短、病床平均周转次数最大、病床利用率最大等一系列指标。考虑到每天新增的病人数、出院人数和每类病人的平均住院时间不同,本文建立了一个基于满意度的动态规划模型。
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程最优化的数学方法。自问世以来,动态规划在最优控制、经济管理、生产调度等方面得到了广泛的应用。
本文以每天的等待队列人数为状态变量,将给每天各类病人安排的床位数作为决策变量。考虑到本题是要从等待队列中挑选出入院的病人,而这一过程类似于操作系统中作业调度算法,因此在优化策略引入了“优先级”这一指标,从而按照优先级从高到低的顺序确定每天安排给各类病人的床位数。
模型求解后,依据问题一中建立的综合评价模型,对该医院目前的病床安排方法(I)、本文欲建立的病床安排模型(II)和一般医院的病床安排情况(III)做了综合比较评价。
结果表明,利用动态规划模型求得的病床安排方案比现行的“先来先服务”规则制定的方案要优。
1、满意度定义及其量化方法
满意度用以描述病人等待时的心里承受程度,主要由病人的入院等待时间决定。病人的等待时间越短,则满意度越高;反之,满意度越小。
本文将对病人满意度进行量化,使满意度值分布在0~1之间。当病人满意度为1时,表示满意度最高,值越小,满意度越低。对此,引入偏小型柯西分布函数来进行量化,其函数形式为:
(16)
由于所给病人类型有四种:外伤、白障、青光眼、视网膜疾病。因为白障(双眼)和白障(单眼)的手术时间不同,住院时间也不一样,我们把它们视为两种不同类型的疾病。故可视为该眼科有五类病人:外伤、白障(双眼)、白障(单眼)、青光眼、视网膜疾病。
因外伤病人门诊后的第二天就会入院接受治疗,故其满意度必为一个值等于1的常数函数。此外,其他病人的满意度值均需通过分布函数求解。
由附录所给数据通过聚类分析法可求得各类病人平均住院时间:外伤病人平均住院时间为7天,白障(双眼)病人平均住院时间为9天,白障(单眼)病人平均住院时间为6天,视网膜疾病病人平均住院时间为11天,青光眼病人平均住院时间为13天。
下面以白障(双眼)病人为例给出该类病人满意度分布函数及求解方法:
由于白障(双眼)病人平均住院时间为9天,可以取,,,由三点值可求得参数为,于是得到函数表达式为:
(17)
同理可得白障(单眼)病人的满意度分布函数表达式为:
(18)
青光眼疾病病人的满意度分布函数表达式为:
(19)
视网膜疾病病人的满意度分布函数表达式为:
(20)
上述各函数的图像如下所示[6-9]:
图1 病人满意度量化函数
2、空床数预测
在病床安排模型中,必须要知道每天的空床数,即每天的出院人数。附录中表2的数据是9月11日这天病床的占用情况。数据表明,79个病床均被人占用,没用空床。
为了求出9月11日这天及其以后每一天的空床数,必须对现在正在住院的79位病人的出院日期给出预测。为此,对问题附录中表1的数据进行统计处理,可求出每类病人的平均住院时间。由于数据信息量很大,本文将每类病人的平均住院时间作为每类病人的住院时间。根据所给数据,可以预测现在79位病人的出院时间,从而筛选出每天的空床数。
以9月11日为例,该天的出院人数为:
表3 9月11日的空床数
疾病类型 | 外伤 | 白障(双眼) | 白障(单眼) | 青光眼 | 视网膜疾病 |
出院人数 | 0 | 0 | 0 | 3 | 2 |
1、阶段的划分
阶段是对整个过程的自然划分,通常根据时间顺序或空间特征来划分阶段,一般按阶段的次序解优化问题。根据本题的实际情况,我们将每一天作为一个阶段,阶段变量,分别表示第天,表示考察期。如表示9月11日这天,以后以此类推。
2、状态向量的确定
状态表示每个阶段开始时过程所处的自然状况。它应能描述过程的特征并且无后效性,即当某阶段的状态变量给定时,这个阶段以后过程的演变与该阶段以前各阶段的状态无关。
为了表示方便,本文将外伤、白障(双眼)、白障(单眼)、清光眼、视网膜疾病分别定义为第类疾病。
本文取状态变量为每天某类门诊病人对病床的需求数量。设表示第天第类疾病的病床需求数,则状态为一向量,且
3、决策变量
决策变量即所要求解的变量,当一个阶段的状态确定后,决策变量决定它将演变到下一阶段的状态。
本文以每天安排等待队列中第类病的病床数为决策变量,它们构成一个决策向量,即
(21)
4、策略的确定
决策组成的序列成为策略,由初始状态开始的全过程的策略记作,即
(22)
5、状态转移方程
在确定性过程中,一旦某阶段的状态和决策已知,下阶段的状态便能完全确定。根据问题的实际情况,本文建立如下的状态转移方程:
(23)
其中,表示第天第类病人的新增人数。
6、指标函数和最优函数
a)指标函数
指标函数是衡量过程优劣的数量指标,是定义在全过程和所有后部子过程上的数量函数。通过问题一确定的评价指标体系可知,一个合理的病床安排模型应该使得病人的平均等待时间最短、病床平均周转率最大及病床利用率最大等。经综合考虑后,本文将病人平均等待时间、病床平均周转率、病床利用率和潜在流失率作为指标函数。具体表示如下:
(1)期病人平均等待时间
一个合理的住院安排方案,自然希望目前病人等待时间最短。设表示第天第类疾病第个病人的到达时间。其中表示9月11日,以后以此类推。表示第天第种病第个病人的目前住院时间,则第天第种病第个病人的等待时间为:
(24)
所以病人在观测期总等待时间。
(2)期病床平均周转率
病床平均平均周转率一直是衡量医院病床综合利用率的重要指标。病床平均平均周转率越大,表明单位时间接受医院服务的病人越多,病床安排模型越合理。
设表示第天分配给第类病人的床位数,则在观测期病床平均周转率为:
(25)
(3)期病床使用率
所谓期病床使用率是指在观测期病床实际工作日数与病床可以提供的最大工作日数的比值。其具体数学表达式为:
(26)
其中,为第类病人的平均到达时间。
(4)期潜在流失率
考虑到实际情况,当病人等待时间过长导致满意度降低时,该病人很可能会转院。显然,一个合理科学的模型应该使转院人数最低。本文将此部分人数与总人数比值定义为潜在流失率。
(27)
其中,为病人满意度不超过30%的病人数;为病人总人数。
b)最优函数
结合实际情况,本文利用加权系数法将以上个指标综合为最优函数,上述四个指标的权重非别为-0.5,0.21,0.26,0.03,则最优函数为:
(28)
7、优化策略
使指标函数达到最优值的策略是从开始的后部子过程的最优策略,通过最优策略和状态转移方程,便可以求出最优决策变量的值。
由于本题是要从等待队列中筛选出入院的病人,而这一过程类似于操作系统中作业调度算法。考虑到疾病的类型不同,与其对应的平均住院时间则不同。此外,不同的疾病还有治疗时间限制,如白障只有周一和周三可以接受治疗。因而如果只考虑先来先服务的安排原则必然导致等待队列越来越长,并且很可能出现非必须住院的病人占着病床资源,引起浪费。
综合以上各种因素,本文引入“优先级”这一参数,并按照优先级高者优先原则确定每天入院的病人。
对于优先级的确定,本文建立了以病人满意度及手术时间限制为自变量的优先级函数。病人满意度即病人对等待时间的心里反映。显然,病人等待时间越短,其满意度越高。病人等待的时间越长,病人的满意度越低,医院应该优先安排此类病人入院,故本文取病人满意度的倒数作为衡量优先级的一个指标。
1)病人满意度:病人满意度的确定在5.2.1模型准备中已给出。
2)手术时间限制
对于手术时间的限制,本文分别就横向和纵向两个方面进行考虑。所谓横向即为同一种疾病手术时间的选择,例如白障(单眼)病人只有周一和周三可以进行手术治疗,并且要有1至2天的术前准备时间,因而白障病人在周一、周五、周六、周日的优先级应该比周二、周三、周四高。所谓纵向比较即为同一天不同类型病人优先级的差异。例如,同为周六,显然白障病人的优先级要大于青光眼和视网膜疾病病人。这里通过调节优先级函数的系数进行控制。
由于外伤病人属于急症病人,因而每天的优先级都为最高。考虑到如果某天没有空床,则该天来的外伤病人要进入等待队列等待,显然该天的外伤病人要比第二天新来的病人拥有更高的优先级。则外伤病人的优先级函数为:
对于白障(双眼)病人,由于该类病人只能在周一治疗第一只眼,在周三治疗第二只眼,并且术前准备为1至2天。所以为了减少该类病人的等待时间,需将该类病人在周六周日的优先级设定为仅小于外伤病人的优先级。同时为了尽量减少该类病人的非必须时间,将该类病人在其他时间的优先级设置为0。则白障(双眼)病人的优先级函数为:
(29)
对于白障(单眼)病人,由于该类病人只能在周一和周三治疗,并且术前准备为1至2天。所以为了减少该类病人的等待时间,同时考虑到白障(单眼)病人周一无法治疗,还可选择周三,而双眼病人则必须为连续的两天,故将该类病人在周五、周六的优先级设定为小于白障(双眼)病人的优先级。而在周日和周一设定其优先级高于青光眼和视网膜疾病病人。同时为了尽量减少该类病人的非必须时间,将该类病人在其他时间的优先级设置为0,则白障(单眼)病人的优先级函数为:
(30)
对于青光眼和视网膜疾病病人,由于仅限制其手术时间不能为周一和周三,但考虑到该类病人的术前准备为2至3天,因而该类病人每一天均可入院,只是其优先级函数系数较低。则青光眼病人的优先级函数为:
(31)
视网膜疾病病人的优先级函数为:
(32)
通过以上优先级函数,便可以对每天排队等待的病人分别求出其对应的优先级,而后按照优先级排序,结合每天的出院人数,便可以给出最优决策。
在模型准备中,求解出9月11日出院人数为5人,利用模型中建立的状态转移方程和最优策略中优先级函数,利用编写程序,求得安排方案见表4:
表4 9月11日入住病人安排方案
入院先后顺序 | 入住病人类型 | 病人序号 | 门诊时间 | 优先级数值 |
1 | 青光眼 | 3 | 2008-8-30 | 12.3126 |
2 | 青光眼 | 8 | 2008-8-31 | 10.0012 |
3 | 青光眼 | 13 | 2008-8-31 | 10.0012 |
4 | 视网膜疾病 | 2 | 2008-8-30 | 8.2310 |
3 | 视网膜疾病 | 4 | 2008-8-30 | 8.2310 |
通过求解结果,可以看出9月11日入院的病人类型仅为青光眼和视网膜疾病两种。而且门诊时间在8月30日左右。考虑到实际情况,9月11日是周四,即使分配给白障病人,由于其术前准备时间为1至2天,也会带来1至3天的非必要住院时间。
在求解了本文欲建立的病床安排模型后,就可以根据问题一中建立的综合评价模型,对该医院目前病床安排方法(I)、本文欲建立的病床安排模型(II)和一般医院病床安排情况(III)做综合评价比较。
由本文计算得到的模型I、II的相关数据(见附录4),以及专家提供的III模型数据,可以列出以下原始数据矩阵:
表5 原始数据矩阵 | |||||||
模型 | |||||||
10.6735 | 103.9091 | 0.0350 | 8.9388 | 9.5 | 1.2405 | 11.7847 | |
6.9802 | 96.8182 | 0.2426 | 9.2000 | 11.0 | 1.2785 | 14.0635 | |
8.4575 | 95.6546 | 0.2300 | 9.1253 | 10.4 | 1.2600 | 13.1520 | |
低优 | 低优 | 高优 | 低优 | 高优 | 高优 | 高优 | |
注:,,…分别代表指标:门诊病人平均等待时间、门诊等待平均队长、病人平均满意度、出院者平均住床日数、平均病床工作日、病床平均周转率、实际病床利用率。
根据原始数据进行逐步求解,得到以下求解结果:
1)密切值法评价结果:
表6 各模型密切值排序
模型 | 排序结果 | |||
I | 0.100758 | 0.070412 | 1.208312 | 3 |
II | 0.980903 | 0.976637 | 0.513135 | 2 |
III | 0.002447 | 0.00033 | 0.103593 | 1 |
2)Topsis法评价结果:
表7 不同模型指标值与最优值的相对接近程度与排序结果
模型 | 排序结果 | |||
I | 0.6771 | 0.0168 | 0.0291 | 3 |
II | 0.0203 | 0.6763 | 0.9758 | 1 |
III | 0.1376 | 0.5995 | 0.1867 | 2 |
3)RSR法评价结果:
表8 分档排序结果
等级 | Y | 排序分档结果 | |
上 | 3.879 | 0.4286 | II |
中 | 4.031 | 0.7619 | III |
下 | 4.057 | 0.8095 | I |
4)三种方法求解结果比较:
表9 三种综合分析方法结果比较
比较对象 | 排序结果 | ||
密切值法 | TOPSIS法 | RSR法 | |
I | 3 | 3 | 3 |
II | 2 | 1 | 1 |
III | 1 | 2 | 2 |
由表9可以看到,三种方法的综合评价结果均显示目前该医院病床安排方法(I)最差,急需改进。而相比之下,本文欲建立的病床安排模型(II)和一般医院病床安排情况(III)差别较小,密切值法评价结果中模型III优于模型II,Topsis法与RSR法评价结果则显示模型II优于模型III。
问题三要求根据当时住院病人及等待住院病人的统计情况,在病人门诊时即告知其大致入住时间区间。
本文假设该医院已经施行在病人门诊时即告知其大致入住时间区间的政策,则当某天病人前来问诊时,当前该医院眼科病床安排情况分为:一为该天病床均被占用,无空床数;二为该天以后-1天空床位均被分配给比病人先到的病人。于是,病人的床位安排只能从第天及其以后的空床位开始。
由于各类疾病轻重缓急、治疗时间各不相同,每天的病床安排需依据各类疾病病人的优先级,为优先级较高的病人预留床位。因此,为病人安排床位时又要考虑到两种情况:一是该天将要到达的人中没有比的优先级高的病人,可将第天将会空闲的床位优先安排给他;二是当该天有比病人的优先级高的病人前来接受门诊,则先给优先级高的病人安排床位后,剩余床位优先安排给病人。
要为优先级较高的病人预留床位就要事先知道该天将要就诊的各类病人数目,本文借用季节性模型对此进行预测。
由于该医院各类眼科手术在一周有严格的时间安排,多数病人在决定前来问诊时会进行权衡,选择合适的时间。各类病人到该医院眼科接受门诊的病人数具有很明显的周期规律性,因此,可以运用季节性模型对9月11日以后前来接受门诊的病人病情类型及数目进行预测。
该医院每天前来眼科问诊的各类病人及数目,是一个由诸多因素引起周期性变化的序列,这种序列称为季节性时间序列,与其相应的模型就叫做季节性模型。
一般地,对周期S的序列,可进行差分运算:
对于季节性模型,可以用一类疏系数APIMA模型描述。现在S=7为整数。时间序列,满足以下模型:
(33)
则称是周期为7的季节性时间序列。其中
(34)
式(33)中,一般不必是白噪声,而可设它是另一个序列
(35)
由式(33),可得:
(36)
(37)
令,得
(38)
式(38)称为乘积型季节性模型,其阶数常用 ×表示。式 ②中的是由原来序列 经差分 得到的,经过这样与运算,可以消除序列 的非平稳性(趋势性)与季节性(周期性)。式(38)是一种疏系数模型,它反映了序列相邻时刻与相隔为周期S的时刻之间复杂变化的规律。
在对该医院每天前来眼科问诊的各类病人及数目进行预测时,首先要进行时间序列模型定价,因为序列有7天的周期性,故对问题附录中第三个表的数据做下列差分运算:
对进行稠密系数APIMA模型拟合。用选取的的各种阶数形式进行试算,用AIC标准寻求最优解,再利用得到的模型进行9月11日以后前来接受门诊的病人病情类型及数目的预测。
假设该医院已经施行在病人门诊时即告知其大致入住时间区间的政策,这种政策秉着公平及床位利用率最高的原则。则某天到来一位病人,由于前面的病人均已被告知入院时间,那么刚到的病人就是需要根据优先级进行床位安排的第一个人,其前面的任何一个住院病人及等待住院病人的统计情况均可作为影响病人入住时间的因素。
为了保证公平原则,按照先来先安排、先到先告知的床位安排策略,根据当前病床被占用、分配、预留情况和病人的优先级安排入院时间;为了保证床位利用率最高原则,当有病人等待时不允许有空床,即当一个病人出院时,立刻有病人离开等待队列入院,体现在病床预先安排上就是不允许跳过当前第一个将要空出的床位,而进行第二个将要空出床位的安排。
假设某天()病人门诊时医院告知其大致入住时间区间为,则求解这个区间需要做以下工作:
对各类病情按照外伤、白障(双眼)、白障(单眼)、青光眼、视网膜疾病的顺序进行编号1,2,3,4,5。
分别求出各类病情病人的优先级:
各类病情病人优先级由病情程度与优先因子(1/满意度)决定,各种病的优先级函数可见问题二,代入等待时间,可知第1,2,3,4,5类病情病人安排床位优先级的大小顺序。
预测统计该天应到病人类型及其数目:
利用第二问的预测模型,可以得到第1,2,3,4,5类病情病人该天应到病人数目,假设按顺序分别为、、、、。
确定床位空闲起始时刻及数目:
根据当前住院病人及等待住院病人的统计情况,推断出病床有空闲的起始时刻第天,以及第天将会空闲的床位数。即随着时间推移,第天的空闲床位数分别为:。
预留优先级高的病人床位:
有些类型病情的病人,虽然可能不是该天第一个接受门诊的,但由于某些情况的限制可能必须先安排入院(如外伤,在第一天门诊后必须第二天入院),医院就需要给该天应到的此类病人按照缓急程度(优先级)预留床位。
根据中求解得到的各0类病人优先级以及中预测得到的该天应到各类病人数目,为优先级高的病人预留床位。
判断是否有比病人优先级高的病人:
经过以上处理后,剩余床位优先安排给病人,会出现以下两种情况:
(1)当该天没有比病人的优先级高的病人前来接受门诊时,可将第天将会空闲的床位优先安排给病人。
(2)当该天有比病人的优先级高的病人前来接受门诊时,先给优先级高的病人安排床位后,剩余床位优先安排给病人。
入住时间区间的上下限求解:
显然,情况(1)时,病人等待时间最短,即可在第天入住,因此,入住时间区间的下限。
情况(2)时,由于第天的空闲床位数分别为:, ,则病人到来时还未正式分配的床位数(包括预留床位)为
(39)
记为第类病情病人,比起优先安排床位的病人有 位,则,可给安排给病人的床位数还剩:
(40)
根据剩余床位优先安排给病人的原则,可将上式的第一个床位安排给他。
假设,即比病人的优先级高的病人占用了天积累的空闲病床数,病人入住时间可安排在第天。因此,入住时间区间的上限。
入住时间区间的最终确定:
综上所述,病人门诊时医院告知其大致入住时间区间为:
注:表示病人门诊时间;表示病床有空闲的起始时间;表示比病人的优先级高的病人占用的病床数从开始的积累天数。
图2 入住时间区间求解过程流程图
在问题四的求解中,本文首先在假定不改变当前手术安排时间的前提下,对问题中给出的周六、周日不安排手术的情况进行讨论。在这两种假设下,对于病床方案的重新分配,只需通过改变它们的优先级函数,而后利用问题二的求解方法求出分配方案。
为了判断是否要改变手术安排时间,只需检验求解结果是否合理,就此本文分别求出了问题一给出的各指标值,并与该医院目前病床安排方法(I)、本文欲建立的病床安排模型(II)和一般医院病床安排情况(III)做综合评价比较。比较结果表明,此种条件下的病床分配方案导致了病人的平均等待时间过长,平均队长增大,病人满意度下降。因而,为了提高病床的综合利用率,需要调整手术安排时间。
如果周六、周日不安排手术,对各类病人都会有一定程度影响,影响最大的是青光眼和视网膜疾病病人,对白障病人影响很小。由于这一措施的实施会对优先级产生一定影响,因而结合问题二,本文分别对各类病人的优先级函数进行修改,找到在此条件下的最优策略,从而给出新的病床安排方案。以下分别讨论在周六周日不安排手术的情况下,各类病人的优先级函数的变动。
对于外伤病人,如果该类病人的门诊时间为周五或者周六,那么他或者等待一两天后到周一接受手术治疗,或者选择转院。考虑到外伤一般是急症,所以本文认为该类病人会选择转院。即在采取这种措施以后,周五周六将没有外伤病人前来门诊。
所以外伤病人的优先级函数为:
(41)
对于白障病人,因为白障病人的手术时间为周一和周三。在问题二中,考虑到白障(双眼)病人如果周四门诊,则至少需要等待3天才可以接受治疗。但白障(双眼)病人的术前准备为1至2天,所以如果该病人周四入住,仅浪费一天的床位资源,因而可以在周四入住。
现在若周六、周日不安排手术,对于青光眼和视网膜疾病的两类病人来说,如果这两类病人周四入院,则要在等4天后,即下周二才可以入院。而这两类病人的术前准备时间为2至3天,因而浪费了1至2天的床位使用时间。对于周五,类似考虑。综合考虑后,白障(双眼)的优先级函数为:
(42)
白障(单眼)的优先级函数为:
(43)
青光眼的优先级函数为:
(44)
视网膜疾病的优先级函数为:
(45)
利用模型二的求解程序,对优先级函数做适当改变后,利用求解结果见下表:
表10 9月11日入院病人情况(周六和周日不安排手术)
入院先后顺序 | 疾病类型 | 门诊时间 | 优先级数值 |
1 | 白障(双眼) | 2008-8-30 | 1936 |
2 | 白障(单眼) | 2008-8-30 | 1936 |
3 | 视网膜疾病 | 2008-8-31 | 1530 |
4 | 视网膜疾病 | 2008-9-1 | 1271.2 |
5 | 白障(双眼) | 2008-9-1 | 1271.2 |
为了判断是否改变手术安排时间,本文同样利用相关数据求出问题一中给出的各种评价指标,并通过与该医院目前病床安排方法(I)、本文欲建立的病床安排模型(II)和一般医院病床安排情况(III)做综合评价比较。得到原始数据见见表。
表11 原始数据矩阵 | |||||||
模型 | |||||||
10.6735 | 103.9091 | 0.0350 | 8.9388 | 9.5 | 1.2405 | 11.7847 | |
6.9802 | 96.8182 | 0.2426 | 9.2000 | 11.0 | 1.2785 | 14.0635 | |
8.4575 | 95.6546 | 0.2300 | 9.1253 | 10.4 | 1.2600 | 13.1520 | |
Ⅳ | 9.4685 | 97.7273 | 0.2139 | 8.9550 | 11 | 1.3051 | 12.4561 |
低优 | 低优 | 高优 | 低优 | 高优 | 高优 | 高优 | |
注:,,…分别代表指标:门诊病人平均等待时间、门诊等待平均队长、病人平均满意度、出院者平均住床日数、平均病床工作日、病床平均周转率、实际病床利用率。
通过各指标对比,可以看出在不改变手术安排时间的前提下,如果周六、周日不安排手术,则会导致病人平均等待时间增大,平均队长增大,病人满意度下降。因而,为了提高病床的综合利用率,需要调整手术安排时间。如可以考虑取消周一、周三不治疗青光眼和视网膜疾病的规定,或者更改白障的治疗时间,在综合考虑后,发现选择周二和周四治疗白障效果最优。
问题五要求给出一个合理的病床比例分配模型,使得所有病人在系统的平均逗留时间(含等待入院及住院时间)最短。在该模型中规定各类病人占用病床的比例大致固定。显然,这是一个优化问题。本文建立了非线性约束规划模型。
由题意可知,目标函数是所有病人在系统的平均逗留时间(含等待入院及住院时间)最短。考虑实际情况,本文选取一年共365天为研究时间段。通过对附录中数据的统计分析可知,该医院几乎每天都没有空闲床位,因而,本模型的建立时假定研究的时间段没有空闲床位。
设表示第类疾病,表示第类病人平均每天的新增加人数,表示第类病人平均住院时间,表示分配给第类病人的床位数。
现以第一类病即外伤为例,研究其在一年的平均逗留时间。由于逗留时间包括等待入院的时间及住院时间。
根据每天医院没有空闲床位的假设,所以住院时间。
由于现在求解的模型前提是各类病人占用病床的比例大致固定,因而分配的初始状态是79位病床均属空闲状态,等待分配。为计算简便,本文将记为一个循环周期。
由分析知,在区间没有等待的病人数。其中,表示365天周期循环的次数。
在区间,一直有病人等待,且每段的等待时间均为:
(46)
此外,在第天有个床位被分配,有个床位未被分配。
在区间,每段等待的时间为。
在考虑区间365天,不属于循环区间的天数为。
综上可得:第类病人的等待入院时间为:
(47)
又因为第类病人的住院时间为:,所以,第类病人的总逗留时间为 ,第类病人的平均逗留时间为。
因而得五类病人总的平均逗留时间为:
1)总床位数约束:
由于医院所能提供的最大床位数为79,故 。
2)等待情况约束:
通过对附录数据的统计分析,发现每天的等待队列中都有不同类型的病人。又因为当分配的床位数超过时,便不会产生等待队列,所以考虑到实际情况,有。
3)整数约束
显然分配给每类疾病的床位数必须为正整数,即。
根据上述分析,建立使得所有病人在系统的平均逗留时间(含等待入院及住院时间)最短的病床比例分配模型如下:
非线性约束规划模型为:
利用求得结果见下表:
表12 各类病人安排床位数
疾病类型 | 外伤 | 白障(双眼) | 白障(单眼) | 青光眼 | 视网膜疾病 |
安排床位数 | 8 | 16 | 12 | 21 | 22 |
安排比例 | 10.13% | 20.25% | 15.19% | 26.58% | 27.85% |
(1)在问题一制定指标评价体系时,本文除了采用医疗机构常用的规性指标外,还充分考虑了病人等待时间和住院时间等指标,从而制定科学合理的指标评价体系。
(2)在对病床安排模型评价中,我们结合当前给定的病床安排数据和我国一般医院的实际情况,采用目前常用的TOPSIS法、秩和比法和密切值法三种综合评价法,同时进行综合比较评价,因而得出的结论更加合理。
(3)在问题二中,由于病人等待状态和医院病床的空闲状态是一个动态变化的过程,本文建立了一个病床动态规划模型。在最优策略中,引入“优先级”和“病人满意度”这两个参数,并且采用柯西偏小型分布函数对对人满意度进行量化,所得结果精确性较高,建立的模型更贴近实际。
(4)问题四中,本文首先考虑在不改变病床安排计划的情况下,如果周六、周日不做手术对各类病人优先级的不同影响,在此基础上对优先级函数进行修改,求出此种条件下的分配方案。为了进一步判断是否改变手术安排时间,我们分别求出问题一中的七项指标,并与该医院目前病床安排方法(I)、本文欲建立的病床安排模型(II)和一般医院病床安排情况(III)做综合评价比较,使得结果更具说服性。
(1)对9月11日及其以后每天出院人数的预测时,为了简化模型和求解方便,我们仅考虑了各类病人的平均住院时间,这种方法的精确性不是很高。
(2)本文所建模型均是在医院没有预留床位的前提下建立的,但是实际生活中,为了应对突发时间的发生,医院都会预留一定数目的床位数。因而,在模型改进中,需要对医院预留床位数进行考虑。
[1] 石磊,医院病床工作效率综合评价,医科大学附属第二医院(40010),中国卫生统计,第23卷第3期:232-234,2006年6月。
[2] 娟,马桂金,医院病床工作效率分析与评价,中国病案,第10卷第3 期:20-21,2009年。
[3] 静,邱宏,运用密切值法评价医院工作质量,第一人民医院,亚太传统医药,第5卷第2期:148-149,2006年2月。
[4] 咸玉女,桂子, 100例家庭病床服务的效果分析, 中华临床医学研究杂, 第12卷第3期:330-331, 2006年2月。
[5] 万秋菊,培英, 2004年我院床位工作效率分析, 医学信息, 第l9卷第1期:11-14, 2006年1月。
[6] 王平根,高允锁, 大型综合医院病床分配方法初探,中国医院统计,第l3卷第1期:7-8,2006年3月。
[7] 袁 梅, 雷, 对我院病床利用与配置情况的分析, 中国卫生统, 第24卷第6期:670-671, 2007年12月。
[8] 高丽娟,大军,岳增文, 应用病床工作效率指标分析医院病床设置情况,中国医院统计,第l6卷第1期:25-26,2009年3月。
[9] 高丽娟,大军,栾 霞, 用密切值法对医院医疗质量综合评价, 中国医院统计, 第15卷第2期:159-161,2006年6月。
[10] 甘应爱,运筹学,,清华大学,2009。
[11] 甘应爱,Matlab7.0实用指南,,电子工业,2005。
附录1 密切值法求解过程相关量:
表1 标准化矩阵
模型 | |||||||
I | 0.10076 | 0.980903 | 0.00033 | 0.08438 | 0.08968 | 0.01171 | 0.11125 |
II | 0.07041 | 0.976637 | 0.00245 | 0.09280 | 0.11096 | 0.01290 | 0.14185 |
III | 0.08637 | 0.97691 | 0.00235 | 0.09320 | 0.10621 | 0.01287 | 0.13432 |
表2 最优点和最劣点矩阵 | |||||||
0.100758 | 0.980903 | 0.002447 | 0.093196 | 0.110961 | 0.012897 | 0.141863 | |
0.070412 | 0.976637 | 0.00033 | 0.084382 | 0.08968 | 0.01171 | 0.111248 | |
附录2 Topsis法求解过程相关量:
表3 同趋势化矩阵(低优指标转化为高优指标)
模型 | |||||||
I | 0.0937 | 0.0096 | 0.0350 | 0.1119 | 9.5 | 1.2405 | 11.7847 |
II | 0.1433 | 0.0103 | 0.2426 | 0.1087 | 11.0 | 1.2785 | 14.0635 |
III | 0.1182 | 0.0105 | 0.2300 | 0.1096 | 10.4 | 1.2600 | 13.1520 |
表4 归一化矩阵
模型 | |||||||
I | 0.450264 | 0.545455 | 0.104136 | 0.586786 | 0.531558 | 0.568515 | 0.522022 |
II | 0.688611 | 0.585227 | 0.721809 | 0.570005 | 0.615488 | 0.58593 | 0.622965 |
III | 0.567996 | 0.596591 | 0.68432 | 0.574725 | 0.581916 | 0.577452 | 0.582589 |
表5 最优向量和最劣向量 矩阵 | |||||||
0.688611 | 0.596591 | 0.721809 | 0.586786 | 0.615488 | 0.58593 | 0.622965 | |
0.450264 | 0.545455 | 0.104136 | 0.570005 | 0.531558 | 0.568515 | 0.522022 | |
附录3 RSR法求解过程相关量:
表6 RSR计算表 | ||||||||
模型 | ||||||||
I | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 0.4286 |
II | 3 | 2 | 3 | 1 | 3 | 3 | 2 | 0.8095 |
III | 2 | 3 | 2 | 2 | 2 | 2 | 3 | 0.7619 |
表7 RSR频数分布
模型 | 概率单位Y | |||
I | 0.4286 | 1 | 9.4 | 3.879 |
III | 0.7619 | 2 | 18.8 | 4.031 |
II | 0.8095 | 3 | 28.2 | 4.057 |
附录4 问题二动态规划模型预测结果
1、根据模型二求得的病人入院前等待日数和入院时间(从8月8号到8月18号)
(病人种类:1——外伤;2——白障(双眼);3——白障(单眼);
4——青光眼;5——视网膜疾病)
入院病人序号 | 病人种类 | 入院前等待日数 | 入院时间 |
114 | 5 | 15 | 2008-8-8 |
115 | 3 | 15 | 2008-8-11 |
116 | 5 | 14 | 2008-8-8 |
117 | 2 | 15 | 2008-8-10 |
118 | 5 | 14 | 2008-8-8 |
119 | 2 | 15 | 2008-8-10 |
120 | 4 | 13 | 2008-8-8 |
121 | 3 | 15 | 2008-8-11 |
122 | 3 | 15 | 2008-8-11 |
123 | 4 | 13 | 2008-8-8 |
125 | 4 | 12 | 2008-8-8 |
126 | 3 | 14 | 2008-8-12 |
127 | 2 | 13 | 2008-8-10 |
128 | 3 | 15 | 2008-8-12 |
129 | 5 | 12 | 2008-8-9 |
131 | 5 | 12 | 2008-8-9 |
132 | 2 | 13 | 2008-8-10 |
133 | 4 | 11 | 2008-8-9 |
134 | 5 | 11 | 2008-8-10 |
136 | 4 | 11 | 2008-8-9 |
138 | 5 | 11 | 2008-8-10 |
139 | 4 | 11 | 2008-8-9 |
140 | 5 | 11 | 2008-8-10 |
141 | 2 | 12 | 2008-8-10 |
142 | 4 | 11 | 2008-8-9 |
143 | 5 | 16 | 2008-8-15 |
144 | 5 | 16 | 2008-8-15 |
145 | 4 | 10 | 2008-8-9 |
146 | 2 | 11 | 2008-8-10 |
147 | 5 | 16 | 2008-8-16 |
148 | 3 | 13 | 2008-8-12 |
149 | 4 | 10 | 2008-8-9 |
150 | 3 | 12 | 2008-8-12 |
151 | 5 | 16 | 2008-8-16 |
152 | 3 | 12 | 2008-8-12 |
154 | 2 | 10 | 2008-8-11 |
157 | 4 | 13 | 2008-8-15 |
158 | 5 | 15 | 2008-8-17 |
159 | 4 | 13 | 2008-8-15 |
160 | 4 | 14 | 2008-8-15 |
161 | 2 | 10 | 2008-8-11 |
162 | 5 | 15 | 2008-8-17 |
164 | 5 | 15 | 2008-8-17 |
165 | 4 | 14 | 2008-8-16 |
166 | 5 | 15 | 2008-8-17 |
168 | 5 | 14 | 2008-8-17 |
169 | 2 | 9 | 2008-8-12 |
170 | 4 | 14 | 2008-8-16 |
171 | 2 | 9 | 2008-8-12 |
172 | 2 | 9 | 2008-8-12 |
173 | 5 | 17 | 2008-8-18 |
174 | 5 | 17 | 2008-8-18 |
177 | 2 | 9 | 2008-8-12 |
178 | 5 | 16 | 2008-8-18 |
179 | 5 | 16 | 2008-8-18 |
180 | 5 | 16 | 2008-8-18 |
181 | 3 | 9 | 2008-8-13 |
182 | 5 | 8 | 2008-8-11 |
182 | 1 | 2 | 2008-8-12 |
183 | 2 | 14 | 2008-8-17 |
184 | 4 | 12 | 2008-8-17 |
185 | 2 | 13 | 2008-8-18 |
186 | 4 | 12 | 2008-8-17 |
188 | 2 | 13 | 2008-8-18 |
189 | 3 | 9 | 2008-8-13 |
190 | 2 | 13 | 2008-8-18 |
191 | 5 | 15 | 2008-8-18 |
194 | 5 | 9 | 2008-8-13 |
194 | 1 | 2 | 2008-8-15 |
195 | 2 | 8 | 2008-8-13 |
195 | 1 | 2 | 2008-8-15 |
197 | 2 | 13 | 2008-8-18 |
198 | 3 | 7 | 2008-8-18 |
199 | 2 | 13 | 2008-8-18 |
199 | 3 | 7 | 2008-8-18 |
200 | 3 | 8 | 2008-8-13 |
203 | 3 | 7 | 2008-8-13 |
204 | 3 | 7 | 2008-8-14 |
207 | 3 | 6 | 2008-8-14 |
208 | 2 | 11 | 2008-8-18 |
209 | 3 | 6 | 2008-8-14 |
211 | 3 | 6 | 2008-8-15 |
211 | 3 | 5 | 2008-8-18 |
212 | 2 | 11 | 2008-8-18 |
212 | 3 | 5 | 2008-8-18 |
213 | 2 | 11 | 2008-8-18 |
213 | 3 | 5 | 2008-8-18 |
216 | 3 | 6 | 2008-8-15 |
217 | 2 | 11 | 2008-8-18 |
218 | 2 | 11 | 2008-8-18 |
220 | 5 | 11 | 2008-8-18 |
222 | 3 | 11 | 2008-8-18 |
223 | 3 | 11 | 2008-8-18 |
228 | 3 | 10 | 2008-8-18 |
228 | 1 | 3 | 2008-8-18 |
230 | 1 | 1 | 2008-8-8 |
231 | 3 | 11 | 2008-8-18 |
233 | 1 | 1 | 2008-8-8 |
243 | 1 | 1 | 2008-8-18 |
2、根据模型二求得的病人住院时间和出院时间(从8月8号到8月18号)
出院病人序号 | 病人种类 | 病人住院时间 | 出院时间 |
2 | 5 | 14 | 2008-8-8 |
6 | 5 | 13 | 2008-8-10 |
11 | 5 | 13 | 2008-8-8 |
15 | 5 | 13 | 2008-8-10 |
17 | 5 | 13 | 2008-8-11 |
21 | 5 | 13 | 2008-8-10 |
25 | 2 | 11 | 2008-8-9 |
26 | 5 | 13 | 2008-8-12 |
30 | 2 | 11 | 2008-8-9 |
31 | 5 | 13 | 2008-8-12 |
32 | 2 | 11 | 2008-8-9 |
33 | 5 | 13 | 2008-8-12 |
34 | 5 | 13 | 2008-8-12 |
36 | 5 | 13 | 2008-8-12 |
37 | 5 | 13 | 2008-8-12 |
38 | 2 | 10 | 2008-8-8 |
39 | 2 | 10 | 2008-8-8 |
42 | 2 | 10 | 2008-8-9 |
43 | 2 | 9 | 2008-8-8 |
44 | 2 | 9 | 2008-8-9 |
45 | 2 | 9 | 2008-8-8 |
46 | 5 | 13 | 2008-8-13 |
47 | 2 | 9 | 2008-8-10 |
49 | 2 | 9 | 2008-8-9 |
51 | 4 | 11 | 2008-8-11 |
52 | 5 | 13 | 2008-8-14 |
55 | 2 | 9 | 2008-8-10 |
56 | 2 | 9 | 2008-8-10 |
57 | 5 | 13 | 2008-8-15 |
58 | 5 | 13 | 2008-8-15 |
59 | 3 | 8 | 2008-8-8 |
60 | 2 | 9 | 2008-8-11 |
61 | 5 | 13 | 2008-8-15 |
62 | 5 | 13 | 2008-8-16 |
63 | 4 | 11 | 2008-8-14 |
66 | 3 | 6 | 2008-8-8 |
67 | 4 | 11 | 2008-8-15 |
68 | 5 | 13 | 2008-8-17 |
69 | 3 | 6 | 2008-8-9 |
70 | 2 | 9 | 2008-8-12 |
75 | 5 | 13 | 2008-8-17 |
76 | 5 | 13 | 2008-8-17 |
79 | 2 | 9 | 2008-8-13 |
80 | 2 | 9 | 2008-8-13 |
83 | 2 | 9 | 2008-8-13 |
84 | 2 | 9 | 2008-8-13 |
85 | 2 | 9 | 2008-8-15 |
87 | 4 | 11 | 2008-8-17 |
88 | 3 | 6 | 2008-8-11 |
89 | 3 | 6 | 2008-8-12 |
90 | 3 | 6 | 2008-8-11 |
91 | 5 | 13 | 2008-8-18 |
92 | 4 | 11 | 2008-8-18 |
94 | 3 | 6 | 2008-8-13 |
95 | 3 | 6 | 2008-8-12 |
97 | 3 | 6 | 2008-8-12 |
98 | 2 | 9 | 2008-8-17 |
100 | 3 | 6 | 2008-8-15 |
102 | 4 | 11 | 2008-8-18 |
105 | 2 | 9 | 2008-8-17 |
106 | 3 | 6 | 2008-8-15 |
110 | 3 | 6 | 2008-8-15 |
111 | 4 | 11 | 2008-8-18 |
113 | 3 | 6 | 2008-8-15 |
115 | 3 | 6 | 2008-8-17 |
117 | 2 | 9 | 2008-8-18 |
119 | 2 | 9 | 2008-8-18 |
121 | 3 | 6 | 2008-8-17 |
122 | 3 | 6 | 2008-8-18 |
126 | 3 | 6 | 2008-8-18 |
127 | 2 | 9 | 2008-8-18 |
128 | 3 | 6 | 2008-8-18 |
132 | 2 | 9 | 2008-8-18 |
141 | 2 | 9 | 2008-8-18 |
146 | 2 | 9 | 2008-8-18 |
148 | 3 | 6 | 2008-8-18 |
150 | 3 | 6 | 2008-8-18 |
152 | 3 | 6 | 2008-8-18 |
153 | 1 | 8 | 2008-8-10 |
154 | 2 | 9 | 2008-8-18 |
163 | 1 | 7 | 2008-8-9 |
167 | 1 | 7 | 2008-8-11 |
175 | 1 | 7 | 2008-8-10 |
176 | 1 | 7 | 2008-8-10 |
181 | 3 | 6 | 2008-8-18 |
182 | 1 | 7 | 2008-8-18 |
182 | 1 | 7 | 2008-8-18 |
189 | 3 | 6 | 2008-8-18 |
198 | 1 | 7 | 2008-8-14 |
200 | 3 | 6 | 2008-8-18 |
203 | 3 | 6 | 2008-8-18 |
204 | 3 | 6 | 2008-8-18 |
207 | 3 | 6 | 2008-8-18 |
209 | 3 | 6 | 2008-8-18 |
211 | 3 | 6 | 2008-8-18 |
214 | 1 | 7 | 2008-8-16 |
216 | 3 | 6 | 2008-8-18 |
230 | 1 | 7 | 2008-8-16 |
233 | 1 | 7 | 2008-8-16 |
3、根据模型二求得的各类病人病床需求数与安排数(从8月8号到8月18号)
日期 | 外伤 | 白障(双眼) | 白障(单眼) | 青光眼 | 视网膜疾病 | |
2008-8-8 | 需求 | 2 | 28 | 21 | 2 | 0 |
安排数 | 2 | 0 | 0 | 1 | 0 | |
2008-8-9 | 需求 | 1 | 29 | 21 | 1 | 0 |
安排数 | 0 | 7 | 1 | 0 | 0 | |
2008-8-10 | 需求 | 1 | 23 | 21 | 1 | 0 |
安排数 | 1 | 5 | 3 | 0 | 0 | |
2008-8-11 | 需求 | 3 | 20 | 20 | 1 | 0 |
安排数 | 1 | 0 | 5 | 0 | 0 | |
2008-8-12 | 需求 | 2 | 21 | 15 | 1 | 0 |
安排数 | 2 | 0 | 8 | 0 | 0 | |
2008-8-13 | 需求 | 2 | 23 | 10 | 1 | 0 |
安排数 | 2 | 0 | 0 | 3 | 0 | |
2008-8-14 | 需求 | 0 | 28 | 11 | 1 | 0 |
安排数 | 0 | 0 | 0 | 1 | 0 | |
2008-8-15 | 需求 | 1 | 31 | 11 | 1 | 0 |
安排数 | 0 | 0 | 0 | 1 | 0 | |
2008-8-16 | 需求 | 1 | 33 | 12 | 1 | 0 |
安排数 | 0 | 4 | 0 | 0 | 0 | |
2008-8-17 | 需求 | 2 | 32 | 13 | 1 | 0 |
安排数 | 1 | 7 | 0 | 0 | 0 | |
2008-8-18 | 需求 | 5 | 27 | 13 | 1 | 0 |
安排数 | 2 | 0 | 10 | 1 | 0 | |
附录5 程序
1.问题二模型计算程序
%本程序是第二问的模型计算程序,只计算出第二天应该安排的人数,其中fenpei的第一列是被安排病人的序号,编号规则是,表2中1-79编为1-79,表 %3中1-102编号为80-181,其他程序求的编号规则一样 function funny(dengdai,zhuyuan) %dengdai代表处在等待队列中的人,其中第一列代表等待人的序号i,第二列代表第i个人的得病情况,1代表外伤,2代表白障双眼,3代表白障单眼,4 %代表青光眼,5代表视网膜疾病,第三列代表第i个病人的等待时间 %zhuyuan代表占用病床的病人,其中第一列代表住院人的序号i,第二列代表第i个病人的得病情况,第三列代表第i个病人的住院时间 E=[7 9 6 11 13];%E(i)代表第i类人的平均住院时间 pp1=0;%被分配的住院人数 pp2=0;%出院人数 dd=0;%所有等待的病人的人数和 t=4;%因为2008年9月11号为星期四 nn1=0;%nn1代表第几天 xuhao=181;%开始是在等待的人数和占用病床的人数的总个数,当再来新人时编号加1 chuyuan=[];%用于存储出院人的信息 ruyuan=[];%用于存储被分配住院人的信息 if(t>7)%让t在1-7变化 t=t-7; end k1=size(zhuyuan,1); k2=size(dengdai,1); you=zeros(k1,1); ds=sum(dengdai(:,3));%星期t的等待队列中病人的总等待时间 dd=dd+length(dengdai); %下面为每天等待中的每种病人优先级的算法 for j=1:k2 if(dengdai(j,3)~=0)%如果病人的等待时间为0,则其优先级为0,因为一般没有病人就诊当天就住院,除非空床很多 if(t==1) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==2) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=0; end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==3) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=0; end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==4) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=0; end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==5) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=100*(1+0.0853*(dengdai(j,3)-1)^2.2402); end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==6) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=100*(1+0.0853*(dengdai(j,3)-1)^2.2402); end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==7) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end end if(dengdai(j,3)==0)%如果其等待时间为0,其优先级为0 you(j)=0; end end %下面对优先级进行排序 [m1 n1]=sort(you,'descend');%m1代表降序排列的优先值,n1代表对应优先级的行坐标 paixu=zeros(k2,3);%用来存放排序后的状态 for ji=1:k2 paixu(ji,1)=dengdai(n1(ji),1);%paixu第一列代表病人的序号 paixu(ji,2)=dengdai(n1(ji),2);%paixu第二列代表病人病情种类 paixu(ji,3)=m1(ji);%paixu第三列代表病人的优先值 end %下面求星期t这一天的空床数 bingchuang=zeros(79,1);%值为0代表有人占用,为1代表没有人住 counter=0;%counter代表病床空闲的个数 for h=1:79 %如果第h个床位的病人住院期已满,则床位状态变为1 if(zhuyuan(h,2)==1 && zhuyuan(h,3)>=E(1)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==2&&zhuyuan(h,3)>=E(2)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==3&&zhuyuan(h,3)>=E(3)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==4&&zhuyuan(h,3)>=E(4)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==5&&zhuyuan(h,3)>=E(5)) counter=counter+1; bingchuang(h)=1; end end fenpei=paixu(1:counter,:);%fenpei代表星期t这天的病人分配情况,第一列代表病人的序号,第二列代表病人得病种类,第三列代表病人优先级 %下面输出日期 if(t==1) disp('星期一:'); end if(t==2) disp('星期二:'); end if(t==3) disp('星期三:'); end if(t==4) disp('星期四:'); end if(t==5) disp('星期五:'); end if(t==6) disp('星期六:'); end if(t==7) disp('星期日:'); end fenpei%输出分配值 |
2. 问题二8月8号到8月18号病床安排求解程序
%由于8月8号时医院的所有病床都被住满,所以我们以8月8号时的住院的病人的情况作为下面zhuyuan矩阵的初值,以8月8号时等待入院的病人的情况作为下 %面dengdai矩阵的初始值,其中shiji代表的是8月8号到8月18号新到的病人矩阵,由于我们对病人的具体住院时间不能确定,所以我们用统计的每类病 %人的住院时间的期望值作为模型的判断病人是否出院,当然如果已知每类病人即将住院的时间,本模型的求解效果会更好,下面程序是对11天的病人进行安排住院,但 %如果只用本程序对1到3天的病人作入院安排,情况会好很多,只需将for ii=1:11改为for ii=1:3即可, %本程序还计算出了每天各个变化状态的值,只需将其后边分号去掉即可显示 function funny1(dengdai,zhuyuan) %dengdai代表处在等待队列中的人,其中第一列代表等待人的序号i,第二列代表第i个人的得病情况,1代表外伤,2代表白障双眼,3代表白障单眼,4 %代表青光眼,5代表视网膜疾病,第三列代表第i个病人的等待时间 %zhuyuan代表占用病床的病人,其中第一列代表住院人的序号i,第二列代表第i个病人的得病情况,第三列代表第i个病人的住院时间 E=[7 9 6 11 13];%E(i)代表第i类人的平均住院时间 pp1=0;%被分配的住院人数 pp2=0;%出院人数 dd=0;%所有等待的病人的人数和 t=4;%因为2008年9月11号为星期四 nn1=0;%nn1代表第几天 need=[];%每列代表每天各类病人的等待人数 anpai=[];%每列代表每天各类病人的分配数 xuhao=181;%开始是在等待的人数和占用病床的人数的总个数,当再来新人时编号加1 shiji=[1 0 2 0 0 0 1 0 1 3 2 1 1 2 1 3 5 3 2 3 2 4 0 1 2 0 3 1 0 1 1 1 4 1 0 1 1 0 1 1 2 0 0 1 5 2 1 4 1 6 1 4 1 2 1];%8月8号到8月18号每天实际到来的病人数,其中第几行代表第几类病人 chuyuan=[];%用于存储出院人的信息 ruyuan=[];%用于存储被分配住院人的信息 for ii=1:11 if(t>7)%让t在1-7变化 t=t-7; end k1=size(zhuyuan,1); k2=size(dengdai,1); you=zeros(k1,1); ds=sum(dengdai(:,3));%星期t的等待队列中病人的总等待时间 dd=dd+length(dengdai); need1=zeros(5,1); for i=1:k2 if(dengdai(i,2)==1) need1(1)=need1(1)+1; end if(dengdai(i,2)==2) need1(2)=need1(2)+1; end if(dengdai(i,2)==3) need1(3)=need1(3)+1; end if(dengdai(i,2)==4) need1(4)=need1(4)+1; end if(dengdai(i,2)==5) need1(4)=need1(5)+1; end end need=[need need1];%每天的情况加在总的里面 %下面为每天等待中的每种病人优先级的算法 for j=1:k2 if(dengdai(j,3)~=0)%如果病人的等待时间为0,则其优先级为0,因为一般没有病人就诊当天就住院,除非空床很多 if(t==1) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==2) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=0; end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==3) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=0; end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==4) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=0; end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==5) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=100*(1+0.0853*(dengdai(j,3)-1)^2.2402); end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==6) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=100*(1+0.0853*(dengdai(j,3)-1)^2.2402); end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==7) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end end if(dengdai(j,3)==0)%如果其等待时间为0,其优先级为0 you(j)=0; end end %下面对优先级进行排序 [m1 n1]=sort(you,'descend');%m1代表降序排列的优先值,n1代表对应优先级的行坐标 paixu=zeros(k2,3);%用来存放排序后的状态 for ji=1:k2 paixu(ji,1)=dengdai(n1(ji),1);%paixu第一列代表病人的序号 paixu(ji,2)=dengdai(n1(ji),2);%paixu第二列代表病人病情种类 paixu(ji,3)=m1(ji);%paixu第三列代表病人的优先值 end %下面求星期t这一天的空床数 bingchuang=zeros(79,1);%值为0代表有人占用,为1代表没有人住 counter=0;%counter代表病床空闲的个数 for h=1:79 %如果第h个床位的病人住院期已满,则床位状态变为1 if(zhuyuan(h,2)==1 && zhuyuan(h,3)>=E(1)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==2&&zhuyuan(h,3)>=E(2)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==3&&zhuyuan(h,3)>=E(3)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==4&&zhuyuan(h,3)>=E(4)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==5&&zhuyuan(h,3)>=E(5)) counter=counter+1; bingchuang(h)=1; end end fenpei=paixu(1:counter,:);%fenpei代表星期t这天的病人分配情况,第一列代表病人的序号,第二列代表病人得病种类,第三列代表病人优先级 %下面求每类病人的分配数 anpai1=zeros(5,1);%每天各类病人的安排数 for i=1:length(fenpei) if(fenpei(i,2)==1) anpai1(1)=anpai1(1)+1; end if(fenpei(i,2)==2) anpai1(2)=anpai1(2)+1; end if(fenpei(i,2)==3) anpai1(3)=anpai1(3)+1; end if(fenpei(i,2)==4) anpai1(4)=anpai1(4)+1; end if(fenpei(i,2)==5) anpai1(4)=anpai1(5)+1; end end anpai=[anpai anpai1];%把每天的情况加在总的里面 %下面输出日期 if(t==1) disp('星期一:'); end if(t==2) disp('星期二:'); end if(t==3) disp('星期三:'); end if(t==4) disp('星期四:'); end if(t==5) disp('星期五:'); end if(t==6) disp('星期六:'); end if(t==7) disp('星期日:'); end fenpei%输出分配值 %下面为计算下一天的初始数据 for c=1:79 if(bingchuang(c)==1) chuyuan=[chuyuan;zhuyuan(c,:)]; end end k1=1; for jk=1:79 if(bingchuang(jk)==1&&k1<=size(fenpei,1)) zhuyuan(jk,1:2)=fenpei(k1,1:2);%用安排的病人情况把出院的病人情况覆盖掉 zhuyuan(jk,3)=0; k1=k1+1; end end zhuyuan(:,3)=zhuyuan(:,3)+1;%到下一天时住院的天数加1,这是新的一天的住院病人情况 %下面根据对t+1天的新到病人的预测对dengdai作变化 xinzeng=[];%用于存储新增的病人的情况 s1=0; s2=0; s3=0; s4=0; s5=0; nn1=nn1+1; %下面先判断到来人数是哪类病人,然后在把新增人数加到xinzeng矩阵中 if(shiji(1,nn1)>0) s1=shiji(1,nn1); for s=1:s1 xinzeng=[xinzeng;[xuhao+1 1 0]]; xuhao=xuhao+1; end end if(shiji(2,nn1)>0) s2=shiji(2,nn1); for s=1:s2 xinzeng=[xinzeng;[xuhao+1 2 0]]; xuhao=xuhao+1; end end if(shiji(3,nn1)>0) s3=shiji(3,nn1); for s=1:s3 xinzeng=[xinzeng;[xuhao+1 3 0]]; xuhao=xuhao+1; end end if(shiji(4,nn1)>0) s4=shiji(4,nn1); for s=1:s4 xinzeng=[xinzeng;[xuhao+1 4 0]]; xuhao=xuhao+1; end end if(shiji(5,nn1)>0) s5=shiji(5,nn1); for s=1:s5 xinzeng=[xinzeng;[xuhao+1 5 0]]; xuhao=xuhao+1; end end %新增的病人情况矩阵处理完毕,下面把新增病人的矩阵加入dengdai矩阵 %下面程序把分配完的病人从等待序列中去除 for i=1:size(fenpei,1) for j=1:size(dengdai,1) if(dengdai(j)==fenpei(i)) ruyuan=[ruyuan;dengdai(j,:)]; dengdai(j,:)=[]; break; end end end %分配完的病人情况已从dengdai中除掉 dengdai(:,3)=dengdai(:,3)+1; dengdai=[dengdai;xinzeng];%得到下一天的等待队列 t=t+1;%时间变为第二天 pp1=pp1+length(fenpei); end pp2=length(chuyuan);%出院总人数 f1=length(chuyuan);%病床使用的人数 f2=sum(ruyuan(:,3));%等待时间之和 f3=dd;%每天队长之和 |
3. 问题四模型求解程序
%本程序是第四问的程序,本程序的优先级的判断与funny中的优先级判断不一样,因为星期六和星期日不进行手术 function funny2(dengdai,zhuyuan) %dengdai代表处在等待队列中的人,其中第一列代表等待人的序号i,第二列代表第i个人的得病情况,1代表外伤,2代表白障双眼,3代表白障单眼,4 %代表青光眼,5代表视网膜疾病,第三列代表第i个病人的等待时间 %zhuyuan代表占用病床的病人,其中第一列代表住院人的序号i,第二列代表第i个病人的得病情况,第三列代表第i个病人的住院时间 E=[7 9 6 11 13];%E(i)代表第i类人的平均住院时间 pp1=0;%被分配的住院人数 pp2=0;%出院人数 dd=0;%所有等待的病人的人数和 t=4;%因为2008年9月11号为星期四 nn1=0;%nn1代表第几天 xuhao=181;%开始是在等待的人数和占用病床的人数的总个数,当再来新人时编号加1 chuyuan=[];%用于存储出院人的信息 ruyuan=[];%用于存储被分配住院人的信息 k1=size(zhuyuan,1); k2=size(dengdai,1); you=zeros(k1,1); ds=sum(dengdai(:,3));%星期t的等待队列中病人的总等待时间 dd=dd+length(dengdai); %下面为每天等待中的每种病人优先级的算法 for j=1:k2 if(dengdai(j,3)~=0)%如果病人的等待时间为0,则其优先级为0,因为一般没有病人就诊当天就住院,除非空床很多 if(t==1) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==2) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=0; end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==3) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=0; end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==4) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=100*(1+0.0853*(dengdai(j,3)-1)^2.2402); end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=0; end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=0; end end if(t==5) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=100*(1+0.0853*(dengdai(j,3)-1)^2.2402); end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=0; end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=0; end end if(t==6) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=0;%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=100*(1+0.0853*(dengdai(j,3)-1)^2.2402); end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==7) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=0;%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end end if(dengdai(j,3)==0)%如果其等待时间为0,其优先级为0 you(j)=0; end end %下面对优先级进行排序 [m1 n1]=sort(you,'descend');%m1代表降序排列的优先值,n1代表对应优先级的行坐标 paixu=zeros(k2,3);%用来存放排序后的状态 for ji=1:k2 paixu(ji,1)=dengdai(n1(ji),1);%paixu第一列代表病人的序号 paixu(ji,2)=dengdai(n1(ji),2);%paixu第二列代表病人病情种类 paixu(ji,3)=m1(ji);%paixu第三列代表病人的优先值 end %下面求星期t这一天的空床数 bingchuang=zeros(79,1);%值为0代表有人占用,为1代表没有人住 counter=0;%counter代表病床空闲的个数 for h=1:79 %如果第h个床位的病人住院期已满,则床位状态变为1 if(zhuyuan(h,2)==1 && zhuyuan(h,3)>=E(1)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==2&&zhuyuan(h,3)>=E(2)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==3&&zhuyuan(h,3)>=E(3)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==4&&zhuyuan(h,3)>=E(4)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==5&&zhuyuan(h,3)>=E(5)) counter=counter+1; bingchuang(h)=1; end end fenpei=paixu(1:counter,:);%fenpei代表星期t这天的病人分配情况,第一列代表病人的序号,第二列代表病人得病种类,第三列代表病人优先级 %下面输出日期 if(t==1) disp('星期一:'); end if(t==2) disp('星期二:'); end if(t==3) disp('星期三:'); end if(t==4) disp('星期四:'); end if(t==5) disp('星期五:'); end if(t==6) disp('星期六:'); end if(t==7) disp('星期日:'); end fenpei%输出分配值 |
4.问题四8月8号到8月18号病床安排的求解程序
%本程序用于求解第4问中,在周六、周日不安排手术的情况下,对8月8号到8月18号的入院于出院安排的求解 function funny3(dengdai,zhuyuan) %dengdai代表处在等待队列中的人,其中第一列代表等待人的序号i,第二列代表第i个人的得病情况,1代表外伤,2代表白障双眼,3代表白障单眼,4 %代表青光眼,5代表视网膜疾病,第三列代表第i个病人的等待时间 %zhuyuan代表占用病床的病人,其中第一列代表住院人的序号i,第二列代表第i个病人的得病情况,第三列代表第i个病人的住院时间 E=[7 9 6 11 13];%E(i)代表第i类人的平均住院时间 pp1=0;%被分配的住院人数 pp2=0;%出院人数 dd=0;%所有等待的病人的人数和 t=4;%因为2008年9月11号为星期四 nn1=0;%nn1代表第几天 need=[];%每列代表每天各类病人的等待人数 anpai=[];%每列代表每天各类病人的分配数 xuhao=181;%开始是在等待的人数和占用病床的人数的总个数,当再来新人时编号加1 shiji=[1 0 2 0 0 0 1 0 1 3 2 1 1 2 1 3 5 3 2 3 2 4 0 1 2 0 3 1 0 1 1 1 4 1 0 1 1 0 1 1 2 0 0 1 5 2 1 4 1 6 1 4 1 2 1];%8月8号到8月18号每天实际到来的病人数,其中第几行代表第几类病人 chuyuan=[];%用于存储出院人的信息 ruyuan=[];%用于存储被分配住院人的信息 for ii=1:11 if(t>7)%让t在1-7变化 t=t-7; end k1=size(zhuyuan,1); k2=size(dengdai,1); you=zeros(k1,1); ds=sum(dengdai(:,3));%星期t的等待队列中病人的总等待时间 dd=dd+length(dengdai); need1=zeros(5,1); for i=1:k2 if(dengdai(i,2)==1) need1(1)=need1(1)+1; end if(dengdai(i,2)==2) need1(2)=need1(2)+1; end if(dengdai(i,2)==3) need1(3)=need1(3)+1; end if(dengdai(i,2)==4) need1(4)=need1(4)+1; end if(dengdai(i,2)==5) need1(4)=need1(5)+1; end end need=[need need1];%每天的情况加在总的里面 %下面为每天等待中的每种病人优先级的算法 for j=1:k2 if(dengdai(j,3)~=0) if(t==1) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==2) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=0; end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==3) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=0; end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==4) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=100*(1+0.0853*(dengdai(j,3)-1)^2.2402); end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=0; end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=0; end end if(t==5) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=1000*dengdai(j,3);%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=100*(1+0.0853*(dengdai(j,3)-1)^2.2402); end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=0; end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=0; end end if(t==6) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=0;%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=100*(1+0.0853*(dengdai(j,3)-1)^2.2402); end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end if(t==7) if(dengdai(j,2)==1)%等于1时,说明是第一类病人 you(j)=0;%you代表等待病人的优先级 end if(dengdai(j,2)==2)%等于2时,说明是第二类病人 you(j)=0; end if(dengdai(j,2)==3)%等于3时,说明是第三类病人 you(j)=10*(1+0.1897*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==4)%等于4时,说明是第四类病人 you(j)=1*(1+0.036*(dengdai(j,3)-1)^2.398); end if(dengdai(j,2)==5)%等于5时,说明是第五类病人 you(j)=1*(1+0.0176*(dengdai(j,3)-1)^2.5098); end end end if(dengdai(j,3)==0) you(j)=0; end end %下面对优先级进行排序 [m1 n1]=sort(you,'descend');%m1代表降序排列的优先值,n1代表对应优先级的行坐标 paixu=zeros(k2,3);%用来存放排序后的状态 for ji=1:k2 paixu(ji,1)=dengdai(n1(ji),1);%paixu第一列代表病人的序号 paixu(ji,2)=dengdai(n1(ji),2);%paixu第二列代表病人病情种类 paixu(ji,3)=m1(ji);%paixu第三列代表病人的优先值 end %下面求星期t这一天的空床数 bingchuang=zeros(79,1);%值为0代表有人占用,为1代表没有人住 counter=0;%counter代表病床空闲的个数 for h=1:79 %如果第h个床位的病人住院期已满,则床位状态变为1 if(zhuyuan(h,2)==1 && zhuyuan(h,3)>=E(1)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==2&&zhuyuan(h,3)>=E(2)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==3&&zhuyuan(h,3)>=E(3)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==4&&zhuyuan(h,3)>=E(4)) counter=counter+1; bingchuang(h)=1; end if(zhuyuan(h,2)==5&&zhuyuan(h,3)>=E(5)) counter=counter+1; bingchuang(h)=1; end end fenpei=paixu(1:counter,:);%fenpei代表星期t这天的病人分配情况,第一列代表病人的序号,第二列代表病人得病种类,第三列代表病人优先级 %下面求每类病人的分配数 anpai1=zeros(5,1);%每天各类病人的安排数 for i=1:length(fenpei) if(fenpei(i,2)==1) anpai1(1)=anpai1(1)+1; end if(fenpei(i,2)==2) anpai1(2)=anpai1(2)+1; end if(fenpei(i,2)==3) anpai1(3)=anpai1(3)+1; end if(fenpei(i,2)==4) anpai1(4)=anpai1(4)+1; end if(fenpei(i,2)==5) anpai1(4)=anpai1(5)+1; end end anpai=[anpai anpai1];%把每天的情况加在总的里面 %下面输出日期 if(t==1) disp('星期一:'); end if(t==2) disp('星期二:'); end if(t==3) disp('星期三:'); end if(t==4) disp('星期四:'); end if(t==5) disp('星期五:'); end if(t==6) disp('星期六:'); end if(t==7) disp('星期日:'); end fenpei;%输出分配值 %下面为计算下一天的初始数据 for c=1:79 if(bingchuang(c)==1) chuyuan=[chuyuan;zhuyuan(c,:)]; end end k1=1; for jk=1:79 if(bingchuang(jk)==1&&k1<=size(fenpei,1)) zhuyuan(jk,1:2)=fenpei(k1,1:2);%用安排的病人情况把出院的病人情况覆盖掉 zhuyuan(jk,3)=0; k1=k1+1; end end zhuyuan(:,3)=zhuyuan(:,3)+1;%到下一天时住院的天数加1,这是新的一天的住院病人情况 %下面根据对t+1天的新到病人的预测对dengdai作变化 xinzeng=[];%用于存储新增的病人的情况 s1=0; s2=0; s3=0; s4=0; s5=0; nn1=nn1+1; %下面先判断到来人数是哪类病人,然后在把新增人数加到xinzeng矩阵中 if(shiji(1,nn1)>0) s1=shiji(1,nn1); for s=1:s1 xinzeng=[xinzeng;[xuhao+1 1 0]]; xuhao=xuhao+1; end end if(shiji(2,nn1)>0) s2=shiji(2,nn1); for s=1:s2 xinzeng=[xinzeng;[xuhao+1 2 0]]; xuhao=xuhao+1; end end if(shiji(3,nn1)>0) s3=shiji(3,nn1); for s=1:s3 xinzeng=[xinzeng;[xuhao+1 3 0]]; xuhao=xuhao+1; end end if(shiji(4,nn1)>0) s4=shiji(4,nn1); for s=1:s4 xinzeng=[xinzeng;[xuhao+1 4 0]]; xuhao=xuhao+1; end end if(shiji(5,nn1)>0) s5=shiji(5,nn1); for s=1:s5 xinzeng=[xinzeng;[xuhao+1 5 0]]; xuhao=xuhao+1; end end %新增的病人情况矩阵处理完毕,下面把新增病人的矩阵加入dengdai矩阵 %下面程序把分配完的病人从等待序列中去除 for i=1:size(fenpei,1) for j=1:size(dengdai,1) if(dengdai(j)==fenpei(i)) ruyuan=[ruyuan;dengdai(j,:)]; dengdai(j,:)=[]; break; end end end %分配完的病人情况已从dengdai中除掉 dengdai(:,3)=dengdai(:,3)+1; dengdai=[dengdai;xinzeng];%得到下一天的等待队列 t=t+1;%时间变为第二天 pp1=pp1+length(fenpei); end pp2=length(chuyuan);%出院总人数 f1=length(chuyuan);%病床使用的人数 f2=sum(ruyuan(:,3));%等待时间之和 jj=length(ruyuan); f3=dd;%每天队长之和 gf=sum(chuyuan(:,3)) jh=length(chuyuan) |
5. 季节性时间预测模型程序
%季节性的预测 function p=jijie(water,n)%water为输入矩阵,n为预测值的个数 water=water';x=water(:)'; s=7; %周期s=7 %n预报数据的个数 m1=length(x); %原始数据的个数 for i=s+1:m1 y(i-s)=x(i)-x(i-s); end m2=length(y); %周期差分后数据的个数 w=diff(y); %消除趋势性的差分运算 m3=length(w); %计算最终差分后数据的个数 for i=0:3 for j=0:s+1 spec=garchset('R',i,'M',j,'Display','off'); %指定模型的结构 [coeffX,errorsX,LLFX] = garchfit(spec,w); %拟合参数 num=garchcount(coeffX); %计算拟合参数的个数 %compute Akaike and Bayesian Information Criteria [aic,bic]=aicbic(LLFX,num,m3); %fprintf('R=%d,M=%d,AIC=%f,BIC=%f\n',i,j,aic,bic); %显示计算结果 end end spec2= garchset('R',1,'M',8,'Display','off'); %指定模型的结构 [coeffX,errorsX,LLFX] = garchfit(spec2,w); %拟合参数 [sigmaForecast,w_Forecast] = garchpred(coeffX,w,n); %求w 的预报值 yhat=y(m2)+cumsum(w_Forecast); %求y 的预报值 for j=1:n x(m1+j)=yhat(j)+x(m1+j-s); end x_hat=x(m1+1:end); %复原到原始数据的预报值 p=x_hat; |
6. 第二小问模型的程序funny的输入值和第四小问中改变条件后对第二天安排方案的求解程序funny2的初始值
dengdai | zhuyuan | |||||
80 | 2 | 12 | 1 | 5 | 13 | |
81 | 5 | 12 | 2 | 5 | 13 | |
82 | 4 | 12 | 3 | 2 | 10 | |
83 | 5 | 12 | 4 | 4 | 10 | |
84 | 5 | 12 | 5 | 5 | 10 | |
85 | 2 | 12 | 6 | 5 | 10 | |
86 | 3 | 11 | 7 | 2 | 10 | |
87 | 4 | 11 | 8 | 5 | 9 | |
88 | 2 | 11 | 9 | 5 | 8 | |
89 | 5 | 11 | 10 | 2 | 8 | |
90 | 5 | 11 | 11 | 2 | 8 | |
91 | 5 | 11 | 12 | 5 | 8 | |
92 | 4 | 11 | 13 | 3 | 7 | |
93 | 3 | 11 | 14 | 5 | 7 | |
94 | 5 | 10 | 15 | 5 | 7 | |
95 | 5 | 10 | 16 | 5 | 7 | |
96 | 4 | 10 | 17 | 5 | 7 | |
97 | 2 | 10 | 18 | 5 | 7 | |
98 | 2 | 10 | 19 | 2 | 7 | |
99 | 2 | 10 | 20 | 5 | 6 | |
100 | 5 | 10 | 21 | 2 | 6 | |
101 | 3 | 10 | 22 | 2 | 6 | |
102 | 5 | 10 | 23 | 5 | 6 | |
103 | 5 | 10 | 24 | 4 | 6 | |
104 | 3 | 9 | 25 | 4 | 6 | |
105 | 3 | 9 | 26 | 2 | 6 | |
106 | 2 | 9 | 27 | 5 | 5 | |
107 | 3 | 9 | 28 | 2 | 5 | |
108 | 5 | 9 | 29 | 2 | 5 | |
109 | 5 | 8 | 30 | 4 | 5 | |
110 | 5 | 8 | 31 | 5 | 5 | |
111 | 2 | 8 | 32 | 2 | 5 | |
112 | 3 | 8 | 33 | 5 | 5 | |
113 | 5 | 8 | 34 | 5 | 5 | |
114 | 3 | 8 | 35 | 2 | 5 | |
115 | 5 | 8 | 36 | 4 | 5 | |
116 | 5 | 8 | 37 | 5 | 5 | |
117 | 2 | 7 | 38 | 5 | 5 | |
118 | 3 | 7 | 39 | 4 | 5 | |
119 | 4 | 7 | 40 | 2 | 5 | |
120 | 5 | 7 | 41 | 2 | 4 | |
121 | 5 | 7 | 42 | 5 | 4 | |
122 | 5 | 7 | 43 | 3 | 4 | |
123 | 4 | 7 | 44 | 2 | 4 | |
124 | 2 | 7 | 45 | 5 | 4 | |
125 | 2 | 7 | 46 | 5 | 3 | |
126 | 4 | 7 | 47 | 5 | 3 | |
127 | 4 | 7 | 48 | 3 | 3 | |
128 | 5 | 7 | 49 | 5 | 3 | |
129 | 5 | 7 | 50 | 2 | 2 | |
130 | 2 | 6 | 51 | 5 | 2 | |
131 | 2 | 6 | 52 | 3 | 2 | |
132 | 2 | 6 | 53 | 2 | 1 | |
133 | 5 | 6 | 54 | 5 | 1 | |
134 | 2 | 6 | 55 | 5 | 1 | |
135 | 4 | 6 | 56 | 5 | 1 | |
136 | 2 | 6 | 57 | 2 | 1 | |
137 | 3 | 6 | 58 | 2 | 1 | |
138 | 2 | 6 | 59 | 4 | 2 | |
139 | 2 | 6 | 60 | 4 | 1 | |
140 | 2 | 5 | 61 | 5 | 1 | |
141 | 5 | 5 | 62 | 4 | 1 | |
142 | 4 | 5 | 63 | 2 | 1 | |
143 | 2 | 5 | 64 | 5 | 1 | |
144 | 5 | 4 | 65 | 3 | 0 | |
145 | 2 | 4 | 66 | 2 | 0 | |
146 | 5 | 4 | 67 | 3 | 0 | |
147 | 3 | 3 | 68 | 2 | 0 | |
148 | 5 | 3 | 69 | 5 | 0 | |
149 | 5 | 3 | 70 | 3 | 0 | |
150 | 3 | 3 | 71 | 5 | 0 | |
151 | 2 | 3 | 72 | 1 | 6 | |
152 | 3 | 3 | 73 | 1 | 5 | |
153 | 5 | 3 | 74 | 1 | 5 | |
154 | 3 | 3 | 75 | 1 | 5 | |
155 | 4 | 2 | 76 | 1 | 4 | |
156 | 4 | 2 | 77 | 1 | 2 | |
157 | 5 | 2 | 78 | 1 | 1 | |
158 | 3 | 2 | 79 | 1 | 1 | |
159 | 3 | 2 | ||||
160 | 5 | 1 | ||||
161 | 3 | 1 | ||||
162 | 2 | 1 | ||||
163 | 3 | 1 | ||||
164 | 3 | 1 | ||||
165 | 2 | 1 | ||||
166 | 3 | 1 | ||||
167 | 4 | 1 | ||||
168 | 2 | 1 | ||||
169 | 5 | 0 | ||||
170 | 5 | 0 | ||||
171 | 4 | 0 | ||||
172 | 2 | 0 | ||||
173 | 2 | 0 | ||||
174 | 4 | 0 | ||||
175 | 2 | 0 | ||||
176 | 1 | 0 | ||||
177 | 2 | 0 | ||||
178 | 5 | 0 | ||||
179 | 3 | 0 | ||||
180 | 5 | 0 | ||||
181 | 5 | 0 | ||||
7. 第二小问中求解8月8号到8月18号的安排方案的程序funny1的输入值h第四小问中funny3的输入值
dengdai | zhuyuan | |||||
114 | 5 | 15 | 2 | 5 | 14 | |
117 | 2 | 14 | 11 | 5 | 13 | |
119 | 2 | 14 | 36 | 5 | 10 | |
115 | 3 | 14 | 38 | 2 | 10 | |
116 | 5 | 14 | 39 | 2 | 10 | |
118 | 5 | 14 | 43 | 2 | 9 | |
121 | 3 | 13 | 45 | 2 | 9 | |
122 | 3 | 13 | 46 | 5 | 9 | |
120 | 4 | 13 | 51 | 4 | 9 | |
123 | 4 | 13 | 55 | 2 | 8 | |
127 | 2 | 12 | 59 | 3 | 8 | |
126 | 3 | 12 | 61 | 5 | 7 | |
125 | 4 | 12 | 66 | 3 | 6 | |
230 | 1 | 1 | 69 | 3 | 6 | |
233 | 1 | 1 | 176 | 1 | 6 | |
132 | 2 | 12 | 15 | 5 | 12 | |
128 | 3 | 12 | 21 | 5 | 12 | |
129 | 5 | 12 | 25 | 2 | 11 | |
131 | 5 | 12 | 30 | 2 | 11 | |
141 | 2 | 11 | 32 | 2 | 11 | |
133 | 4 | 11 | 42 | 2 | 10 | |
136 | 4 | 11 | 49 | 2 | 9 | |
139 | 4 | 11 | 56 | 2 | 8 | |
142 | 4 | 11 | 60 | 2 | 7 | |
134 | 5 | 11 | 163 | 1 | 7 | |
138 | 5 | 11 | 70 | 2 | 6 | |
140 | 5 | 11 | 175 | 1 | 6 | |
143 | 5 | 11 | 79 | 2 | 5 | |
144 | 5 | 11 | 80 | 2 | 5 | |
146 | 2 | 10 | 83 | 2 | 5 | |
148 | 3 | 10 | 84 | 2 | 5 | |
145 | 4 | 10 | 88 | 3 | 4 | |
149 | 4 | 10 | 90 | 3 | 4 | |
147 | 5 | 10 | 95 | 3 | 3 | |
154 | 2 | 9 | 97 | 3 | 3 | |
150 | 3 | 9 | 26 | 5 | 11 | |
152 | 3 | 9 | 31 | 5 | 11 | |
151 | 5 | 9 | 34 | 5 | 11 | |
161 | 2 | 8 | 37 | 5 | 10 | |
157 | 4 | 8 | 44 | 2 | 9 | |
159 | 4 | 8 | 47 | 2 | 9 | |
160 | 4 | 8 | 167 | 1 | 6 | |
158 | 5 | 8 | 89 | 3 | 4 | |
165 | 4 | 8 | 94 | 3 | 3 | |
162 | 5 | 8 | 6 | 5 | 13 | |
164 | 5 | 8 | 33 | 5 | 11 | |
166 | 5 | 8 | 52 | 5 | 9 | |
169 | 2 | 7 | 153 | 1 | 8 | |
168 | 5 | 7 | 62 | 5 | 7 | |
171 | 2 | 7 | 63 | 4 | 7 | |
172 | 2 | 7 | 17 | 5 | 12 | |
177 | 2 | 7 | 57 | 5 | 8 | |
170 | 4 | 7 | 68 | 5 | 6 | |
173 | 5 | 7 | 198 | 1 | 3 | |
174 | 5 | 7 | 100 | 3 | 2 | |
183 | 2 | 6 | 58 | 5 | 8 | |
181 | 3 | 6 | 75 | 5 | 6 | |
178 | 5 | 6 | 113 | 3 | 1 | |
179 | 5 | 6 | 105 | 2 | 2 | |
180 | 5 | 6 | 106 | 3 | 2 | |
182 | 5 | 6 | 110 | 3 | 1 | |
185 | 2 | 5 | 214 | 1 | 1 | |
184 | 4 | 5 | 67 | 4 | 6 | |
186 | 4 | 5 | 76 | 5 | 6 | |
188 | 2 | 5 | 85 | 2 | 4 | |
190 | 2 | 5 | 87 | 4 | 4 | |
189 | 3 | 5 | 92 | 4 | 3 | |
187 | 5 | 5 | 102 | 4 | 2 | |
191 | 5 | 5 | 91 | 5 | 4 | |
192 | 5 | 5 | 98 | 2 | 2 | |
193 | 5 | 5 | 103 | 5 | 2 | |
194 | 5 | 5 | 111 | 4 | 1 | |
195 | 2 | 4 | 99 | 5 | 2 | |
197 | 2 | 4 | 104 | 5 | 2 | |
199 | 2 | 4 | 108 | 5 | 1 | |
200 | 3 | 4 | 112 | 5 | 1 | |
196 | 5 | 4 | 101 | 5 | 2 | |
203 | 3 | 3 | 109 | 5 | 1 | |
204 | 3 | 3 | 107 | 5 | 1 | |
205 | 4 | 3 | ||||
201 | 5 | 3 | ||||
202 | 5 | 3 | ||||
207 | 3 | 2 | ||||
206 | 5 | 2 | ||||
208 | 2 | 2 | ||||
212 | 2 | 2 | ||||
209 | 3 | 2 | ||||
211 | 3 | 2 | ||||
210 | 5 | 2 | ||||
213 | 2 | 2 | ||||
217 | 2 | 2 | ||||
218 | 2 | 2 | ||||
216 | 3 | 2 | ||||
215 | 5 | 2 | ||||
219 | 5 | 2 | ||||
226 | 2 | 1 | ||||
227 | 2 | 1 | ||||
229 | 2 | 1 | ||||
222 | 3 | 1 | ||||
223 | 3 | 1 | ||||
228 | 3 | 1 | ||||
220 | 5 | 1 | ||||
221 | 5 | 1 | ||||
224 | 5 | 1 | ||||
225 | 5 | 1 | ||||
232 | 2 | 1 | ||||
231 | 3 | 1 | ||||
234 | 4 | 1 | ||||