最新体检排队问题1文档格式.docx
《最新体检排队问题1文档格式.docx》由会员分享,可在线阅读,更多相关《最新体检排队问题1文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
![最新体检排队问题1文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/10/a7914f5e-c571-4acf-b884-8453232e4779/a7914f5e-c571-4acf-b884-8453232e47791.gif)
经过模型计算,得到团队体检顺序的较优值,其结果见正文。
关键词:
插值拟合、MATLAB、体检项目、贪心算法
一、问题重述
某城市的体检中心每天有许多人前去体检,全部体检项目包括:
抽血、内科、外科、B超、五官科、胸透、身高、体重、…等等。
每个人的体检项目可能各不相同,假设每个体检项目的服务时间是确定的,并且只有1个医生值班,每次只能为1个客户服务。
为提高设备利用率、降低客人的等待时间,中心请你帮助完成如下任务:
1.请你为某个新来的客人安排他的体检顺序,使其完成需要的全部检查的时间尽量少(在各个体检项目处都可能有人排队等待);
2.设计1组数据来验证上述结论。
3.接待团体客人时,如何安排每个人的体检顺序,使得体检中心能尽快完成任务,设计1组数据来验证该结论。
二、问题分析
问题一,要使完成需要的全部检查的时间尽量少,就必须考虑一下几个因素:
(1)当前体检人员及待检人员的统计情况;
(2)该体检人员所需检查的项目以及每个项目所需要的时间;
(3)单位时间内到达和离开检查中心的人数;
(4)体检医疗设施和医务人员的限制;
因此,不同时间每个因素所处的状态不同,这些状态都将影响检查所需要的总时间。
问题二,要求设计一组数据来验证第一问的结论,因此我们除了要考虑第一题中提到的因素以外,还要考虑设计数据的合理性以及有效的说服力。
问题三,对于团体客人时,由于团队客人所需要检查的项目是相同的,而且团队客人是同时到达的。
所以在安排时,要考虑到在同一时间内对团队客人的初次体检项目进行分配。
然后再根据每个项目的实际待检人数以及每个项目的服务时间再次对客人进行安排,直到最后一名团队客人在较短的时间内完成所需体检的项目。
三、基本假设与符号说明
3.1基本假设
(1)假设每个体检项目的服务时间是确定的,并且只有1个医生值班,每次只能为1个体检人员服务。
(2)假设将体检人员的路途时间计入服务时间内。
(3)假设需要体检的人员没有来源限制,即其相互约束可忽略不计,来自无限群体。
(4)假设团队客人同时到达体检中心。
(5)假设每天每个体检项目同一时刻的体检人员到达率基本相当。
(6)假设体检中心工作时间从8:
00开始
3.2符号说明
编号
服务时间
t时间排队人数
t时间到达的人数
dpi(t)/dt到达率
抽血
A1
S1(t)
P1(t)
2
内科
A2
S2(t)
P2(t)
3
外科
A3
S3(t)
P3(t)
4
B超
A4
S4(t)
P4(t)
5
五官科
A5
S5(t)
P5(t)
6
胸透
A6
S6(t)
P6(t)
7
身高体重
A7
S7(t)
P7(t)
四、模型准备
1、贪心算法(Greedyalgorithm)是一种对某些求最优解问题的更简单、更迅速的设计技术。
用贪婪法设计算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,而不考虑各种可能的整体情况,它省去了为找最优解要穷尽所有可能而必须耗费的大量时间,它采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题,通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都要保证能获得局部最优解,但由此产生的全局解有时不一定是最优的,所以贪婪法不要回溯。
贪婪算法是一种改进了的分级处理方法。
其核心是根据题意选取一种量度标准。
然后将这多个输入排成这种量度标准所要求的顺序,按这种顺序一次输入一个量。
如果这个输入和当前已构成在这种量度意义下的部分最佳解加在一起不能产生一个可行解,则不把此输入加到这部分解中。
这种能够得到某种量度意义下最优解的分级处理方法称为贪婪算法。
对于一个给定的问题,往往可能有好几种量度标准。
初看起来,这些量度标准似乎都是可取的,但实际上,用其中的大多数量度标准作贪婪处理所得到该量度意义下的最优解并不是问题的最优解,而是次优解。
因此,选择能产生问题最优解的最优量度标准是使用贪婪算法的核心。
一般情况下,要选出最优量度标准并不是一件容易的事,但对某问题能选择出最优量度标准后,用贪婪算法求解则特别有效。
最优解可以通过一系列局部最优的选择即贪婪选择来达到,根据当前状态做出在当前看来是最好的选择,即局部最优解选择,然后再去解做出这个选择后产生的相应的子问题。
每做一次贪婪选择就将所求问题简化为一个规模更小的子问题,最终可得到问题的一个整体最优解。
贪婪算法可解决的问题通常大部分都有如下的特性:
(1)有一个以最优方式来解决的问题。
为了构造问题的解决方案,有一个候选的对象的集合:
比如不同面值的硬币。
(2)随着算法的进行,将积累起其它两个集合:
一个包含已经被考虑过并被选出的候选对象,另一个包含已经被考虑过但被丢弃的候选对象。
(3)有一个函数来检查一个候选对象的集合是否提供了问题的解答。
该函数不考虑此时的解决方法是否最优。
(4)还有一个函数检查是否一个候选对象的集合是可行的,也即是否可能往该集合上添加更多的候选对象以获得一个解。
和上一个函数一样,此时不考虑解决方法的最优性。
(5)选择函数可以指出哪一个剩余的候选对象最有希望构成问题的解。
(6)最后,目标函数给出解的值。
为了解决问题,需要寻找一个构成解的候选对象集合,它可以优化目标函数,贪婪算法一步一步的进行。
起初,算法选出的候选对象的集合为空。
接下来的每一步中,根据选择函数,算法从剩余候选对象中选出最有希望构成解的对象。
如果集合中加上该对象后不可行,那么该对象就被丢弃并不再考虑;
否则就加到集合里。
每一次都扩充集合,并检查该集合是否构成解。
如果贪婪算法正确工作,那么找到的第一个解通常是最优的。
贪心解的确不错,可惜不一定是最优解。
2、数值微分(numericaldifferentiation):
根据函数在一些离散点的函数值,推算它在某点的导数或高阶导数的近似值的方法。
通常用差商代替微商,或者用一个能够近似代替该函数的较简单的可微函数(如多项式或样条函数等)的相应导数作为能求导数的近似值。
例如一些常用的数值微分公式(如两点公式、三点公式等)就是在等距步长情形下用插值多项式的导数作为近似值的。
此外,还可以采用待定系数法建立各阶导数的数值微分公式,并且用外推技术来提高所求近似值的精确度。
当函数可微性不太好时,利用样条插值进行数值微分要比多项式插值更适宜。
如果离散点上的数据有不容忽视的随机误差,应该用曲线拟合代替函数插值,然后用拟合曲线的导数作为所求导数的近似值,这种做法可以起到减少随机误差的作用。
数值微分公式还是微分方程数值解法的重要依据。
当函数是以离散点列给出时,当函数的表达式过于复杂时,常用数值微分近似计算的导数。
在微积分中,导数表示函数在某点上的瞬时变化率,它是平均变化率的极限;
在几何上可解释为曲线的斜率;
在物理上可解释为物体变化的速率。
以下是导数的三种定义形式:
(1)
在微积分中,用差商的极限定义导数;
在数值计算中返璞归真,导数取用差商(平均变化率)作为其近似值。
最简单的计算数值微分的方法是用函数的差商近似函数的导数,即取极限的近似值。
下面是与式
(1)相应的三种差商形式的数值微分公式以及相应的截断误差。
五、模型的建立
我们根据体检中心的排队流程,做出如下流程图。
问题一:
给定某体检中心的7种体检项目所需的时间表(表一)以及各个时段的体检人数(表二),根据表一和表二中数据我们初步建立了微分方程模型,;
其中,表示从0到t时刻某项检查到达的总人数,表示t时刻某项检查到达率:
,即;
为了近似的求解出,时,则,此时的即为每隔一个小时到来体检中心做某项检查的人数,通过查阅资料得到西南医院体检中心各时段每个项目体检人数变化不大,最后我们用5天的平均数据(见表二),在用三次函数拟合出。
表一体检项目服务时间表
项目
4min
12min
3min
表二各个时段体检人数表
人数项目
时间
身高
体重
8:
00~9:
00
8
11
15
17
9:
00~10:
18
20
10:
00~11:
16
23
11:
00~12:
14
12
14:
00~15:
13
10
15:
00~16:
16:
00~17:
17:
00~18:
为了确立体检人数与时间的关系,利用插值拟合,通过MATLAB软件编程(见附录1),拟合出每一个体检项目的到达率与时间的函数关系。
为使客人完成需要的全部检查的时间尽量少,我们初步建立如下微分方程模型:
;
利用该模型,我们可以算出在0-t时间内每一项检查项目当前的等待的人数,根据当前等待人数,我们可以确定当前所有检查项目中等待时间最短的一个,以此确定待检人员下一个体检项目。
但是,由于当前模型中的时间表示的是该体检中心工作时间内较长的一段时间,以此算出的等待的人数不能满足及时性、合理性,为了避免这一不足,我们对模型进行了进一步优化,优化的思想即把工作时间等分为若干个适当的时间段,每一时间段后计算一次当前等待人数,求出每个项目需要等待的时间,并对系统数据进行更新,计算出剩余项目中等待时间最少的体检项目,对待检人员做出合理的检查安排。
优化后的模型如下:
当
0;
其他
优化后的模型可以有效地计算出在时间内到达每个项目排队的的人数,从而可以计算出当前每个项目需要等待的时间为:
T=
然后,通过采用公式计算的时间,比较每个项目所需等待的时间,找出其中的最小值,进行待体检人员下个体检项目的安排。
该模型避免出现在一个较长的时间段内的某一时间点以前待检人员排