基于模拟退火的护士调度算法研究NP难问题.docx
- 文档编号:27916924
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:24
- 大小:186.85KB
基于模拟退火的护士调度算法研究NP难问题.docx
《基于模拟退火的护士调度算法研究NP难问题.docx》由会员分享,可在线阅读,更多相关《基于模拟退火的护士调度算法研究NP难问题.docx(24页珍藏版)》请在冰豆网上搜索。
基于模拟退火的护士调度算法研究NP难问题
基于模拟退火的护士排班算法研究
院系:
控制科学与工程系
专业:
物流管理(系统工程)
学位申请人:
指导老师:
基于模拟退火的护士排班算法研究
摘要
随着经济的发展,国内外医疗问题越来越受注。
护士是医疗机构中的重要成员。
护士排班是医院日常工作的重要方面。
科学合理的护士排班能降低医院的人力资源成本,提高护理质量。
护士排班是基层护理者的一项经常性工作,是在现有的人力资源基础上,对护理工作任务、内容、程序、人力、和时间因素通盘考虑,做出系统、科学地安排,使护理人员明确职责,工作效率得到提高,保证医院护理质量,同时降低人力资源成本[]。
由于护士排班问题受各种劳动法规约束,不同护士的能力有差异以及护士有班次偏好需求,护士排班问题是极为复杂的组合优化问题,属NP难问题。
本文旨在利用模拟退火算法求解该问题。
本文首先对护士排班问题建立整数规划模型,考虑护士级别和偏好,在减少医院成本的同时,尽量满足护士对于班次的偏好。
然后探讨用模拟退火算法求解护士排班问题。
详细设计了模拟退火算法,首先在不破坏一些约束的情况下(如晚班后不能接着上早班),随机产生初始解,然后用增加护士和减少班次的方法对初始解进行可行化,再在不破坏解的可行性的情况下,对排班表进行变换来产生新解,构成模拟退火的关键部分,再设计接受准则和算法参数,完成了算法的设计。
最后,在C++builder6.0环境中进行编程实现,对湖南省某市级医院某科室的护士排班问题就行求解,取得了良好的效果。
关键字:
护士排班;建模;模拟退火算法
StudyonNurseSchedulingAlgorithmBasedonSimulatedAnnealing
Abstract
Astherapiddevelopmentofeconomy,healthorganizationishighlyconcernedathomeandabroad.Nursesareimportantmembersofhealthorganization.Nurseschedulingisanimportantpartofdailyoperationinhospitals.Scientificandreasonablenurseschedulingcannotonlyreducetheoperatingcostsofhospitalsbutalsoimprovethequalityofnursingwork.
Nurseschedulingisanormaljobofnursesatbasiclevel,consideringthenursingwork,content,process,personnel,andtimefactors,whichismakingsystematicandscientificplantomakenursesclearabouttheirwork,improvetheproficiencyandqualityoftheirworkandreducepersonnelcost.Becausenurseschedulingproblemisconstrainedbymanyrulesoflaborlawandtherearedifferencesofabilitiesandpreferencesbetweendifferentnurses,nurseschedulingisacombinationoptimizationproblem,belongingtoNPhardproblem.
Thethesishasbuilttheintegerprogrammingofnurseschedulingproblem,consideringthelevelsandpreferencesofnurses.
Thethesistriestousesimulatedannealingmethodtosolvethenurseschedulingproblem.Atfirst,initialsolutionisgeneratedrandomly.Atthesametime,theupworktimeofanurseisprotectednottobebrokenandotherconstrainsareconcerned,forexample,whenanursegetsanightshift,hecan’tgetthemorningshiftstheotherday.Thenaddingnurseandsubtractingshiftmethodsareusedtomaketheschedulefeasible.Inaddition,muchiterationisusedtomaketheschedulebetter.Finally,programsarewritteninC++builderenvironmentandgoodresultisreached.
Keywords:
nursescheduling,model,simulatedannealingalgorithm
目录
摘要I
AbstractII
1绪论1
1.1选题背景和意义1
1.2国内外研究现状1
1.2.1国内研究现状2
1.2.2国外研究现状3
1.3研究内容与组织结构3
2护士排班问题建模5
2.1护士排班问题5
2.2护士排班问题整数规划模型6
3基于模拟退火的护士排班算法7
3.1模拟退火算法概述7
3.2基于模拟退火的护士排班算法设计9
3.2.2方案可行化11
3.2.3新解的产生12
3.2.5接受准则14
3.2.4参数设计14
4基于模拟退火的护士排班算法实现与案例分析14
4.1案例背景14
4.2算法实现15
4.2.1类的设计15
4.2.2模拟退火算法实现16
4.3结果分析16
5总结与展望18
5.1总结19
5.2展望19
致谢19
参考文献20
1绪论
1.1选题背景和意义
近年来,国内外医疗问题越来越受重视。
护士是一种需要经过专业训练的人力资源、是医院日常运营的基础。
护士排班问题也属于医疗问题的一个方面。
目前世界各地(特别是在发达国家)的护士资源不足的问题越来越严重,受到了广泛重视。
但是在我国管理机构对护士资源的重视度尚不够,致使很多地方出现护士严重不足的问题。
护理人力资源与病人期望非常不平衡,临床护士编制严重不足,护士班次更换频繁,病人没有相对固定的护理人员,整体护理难以真正落实到位,如何通过管理合理使用人力资源,从而解决人力短缺问题,值得我们不断探讨与研究[]。
此外,传统的护士排班方法采用手工排班方法,这样显得混乱无序,而且效率低下。
随着生活水平的提高,大众对于护理工作的要求也必然随之提高。
因此提高护士利用效率非常有必要。
运用计算机算法生成排班表,既能提高准确度又提高了效率。
从护士数量、结构、配置、分工(排班)等,实施人性化排班。
提高护士工作积极性和主动性,使排班具有规律性、提高了管理效率。
护士排班是基层护理者的一项经常性工作,是在现有的人力资源基础上,对护理工作任务、内容、程序、人力、和时间因素通盘考虑,做出系统、科学地安排,使护理人员明确职责,工作效率得到提高,保证医院护理质量,同时降低人力资源成本[1]。
护士排班问题已经成为医院管理的核心内容之一。
但是由于排班中存在一系列劳动法约束,外加需要考虑不同护士的能力级别差异,因此,护士排班问题是极为复杂的组合优化问题,属NP难问题,在国外深受研究关注。
在解决组合优化问题时,元启发式算法能起到很好的作用。
本论文用模拟退火方法研究护士排班算法。
护士排班研究属于护理研究的一部分。
现代医学不断发展,对护理工作也提出了更高的要求。
研究护士排班问题对于提高护理水平有重要作用,对于促进护理学与先进的医学同时前进具有重大意义。
1.2国内外研究现状
对于护士排班问题,国外的研究较早,很多人用了很多科学方法来优化,而国内的研究较少,很多都停留在手工排班方法,用算法优化的比较少。
1.2.1国内研究现状
由于国内的研究大部分都停留在定性方面,从排班类型,排班原则,排班方式三个方面进行总结。
另外,也有少数算法的研究。
李秋洁[]提出排班类型依照排班权利的归属分为集权式排班(由护理部负责)、分权式排班(由护士长负责)及自我排班(由护士自行排班)3种。
对于排班原则,吕芳[]提出以病人的需要为基本原则:
以病人的护理需要为中心,适应护理工作的连续性,24h不间断,合理有效地安排人力,护理、教学、科研须统筹兼顾;秦玉霞等[]提出互补增值原则:
掌握护理工作规律,分清主次缓急,合理搭配各层次人员,做到年龄、学历、资历、气质及技能互补,使工作互不重叠、互不干扰,既能保证重点,又能照顾一般;杨玉霞[]提出均衡平等原则:
保持各班工作量的均衡,按工作量安排人力,一视同仁,各岗位轮转机会均等,使人人充分发挥效能。
张萍[]提出稳定机动原则:
护理排班方式应相对稳定,护士长提前安排好下一周班次后向护士公示并上报护理部,使护士对自己的班次有预见性;常备机动人员,以便随时调配归。
苟艳梅等[]提出人性化原则:
护士并非单一角色,除工作中的职业角色外,还有社会角色,应以入为本,尽量满足护士的合理要求。
对于排班方式,戴琴、周力等[-]提出按功能制护理模式排班实行全院统一排班的方式,按功能制护理方式分配岗位,按岗位配备护士,由白班、中班、前夜班、后夜班组成,每名护士1个班次值ld,循环进行。
白班人员有4—5名,中午、夜班只有1名护士值班,其缺点是白班人员多、夜班人员少,遇到病重、手术病人多或抢救时难以应付,无暇顾及其他病人。
该排班方式是我国医院护士排班最常用的,也是近年来要求改革的一种方式,适用于急诊、危重病人较少的五官科、肿瘤化疗科及康复科等。
何丽等[]提出按整体护理模式排班将病区工作分为临床组与办公室组。
办公室组值白班,有利于高年资护士及特殊时期护士(妊娠及哺乳期)的合理利用,体现了“以人为本”的管理理念;临床组实施以责任护士负责制的小组或整体护理,相对固定,分组负责病区全都病人的健康教育、基础护理及中、晚班工作。
每组由各层次护士组成,责任护士值白班,3个月轮转1次,有利于病人的全程护理,并通过与医生共同查房,充实了专科知识及避免医护间的不一致。
该排班方式适用于整体护理模式病房及护理人员充足的科室,值得注意的是排班时应遵循“互补增值”原则。
做到年龄、学历、资历、气质、技能及能力互补,形成团队合力,扬长避短,全员参与管理。
班次分类、排班原则和排班方法都是一些定性方面的研究,随着研究的不断深入,也产生了很多定量化的研究,用到了不少科学方法。
沈吟东等[]利用矩阵向量化变换来求解护士排班问题。
刘晓荣等[]设计了一种能同时满足医院和护士需求的更具弹性的决策支持系统,它采用了选择性模型,而这些模型又融合了弹性工作方式,因为它结合了每天24h每周7d的排班问题,并给出了弹性护上排班图和决策支持系统的结构。
1.2.2国外研究现状
国外的护士排班研究可以分为三个阶段,早期的数学方法,随后的人工智能法,近期的元启发式算法。
很多早期论文[,,,]都为他们的线性模型提到数学优化方法。
数据的简化是不可避免的。
现实世界的问题很复杂以致难以用线性规划的方法优化,当护士的人数、排班时间和约束个数增加时,该方法就陷入了“维数灾”。
后来很多学者采用启发式算法(如[,,,,])。
定义多个目标也是常见的,如[,,,,,]。
20世纪80年代以来,人工智能被应用于护士调度问题(陈述方法[],约束编程[30,31,32,33],专家系统[24,27,33],基于案例的归因[34,35]等)。
这些方法中的一部分和今天的研究问题依然相关[31,36,33]。
20世纪90年代以来,很多论文用元启发式算法如模拟退火[37,38],禁忌搜索[39,40]和进化算法[41,42,43,44,45]来解决这个问题。
1.3研究内容与组织结构
本文主要研究用模拟退火算法求解护士排班问题。
首先阐述了护士排班问题,然后建立考虑护士偏好和级别的护士排班问题整数规划模型,然后概述模拟退火算法,再将两者结合起来,用模拟退火算法求解护士排班问题,优化排班方
案。
本文结构安排如图1-1所示:
图1-1论文框架
本文主要内容如下:
第1章讲述护士排班问题的背景和意义,对国内外研究现状进行了综述。
通过查阅相关文献,基本把握了当前国内外护士排班问题的研究现状,从而确定了自己的研究方向。
第2章首先对护士排班问题进行了详细描述,然后建立了护士排班问题的数学模型,建立了考虑护士级别和偏好的整数规划模型。
第3章首先概述模拟退火算法,然后将模拟退火算法和护士排班算法结合起来,设计基于模拟退火的护士排班算法。
第4章讲述算法实现。
最后利用实际案例中的数据进行计算。
第5章对论文进行了总结,并且做出展望。
2护士排班问题建模
本章主要讲述护士排班问题的建模。
首先详细阐述了护士排班问题,然后建立了考虑护士级别和偏好的整数规划模型。
2.1护士排班问题
本文研究的护士排班问题是指:
给定一个排班周期(如:
一周)内的全部护理工作,并且给定一组具有不同级别的护士,要求满足一系列劳动法规等约束,编制出一个最有效(即成本最低)的护士排班方案。
在该问题中,每位护士都应有一个特定的护士级别,并且规定级别高的护士允许替代级别低的护士进行工作,反之不行。
这样不同级别的护士不可能单独排班,必须对全部护士一起排班,因此使得该问题变得复杂。
根据我国护理工作的普遍特性,本文对拟研究的护士排班问题做如下假设:
1)排班周期为七天,从周日到周六;
2)每日平均分三个班次,即分为如下三个班型:
早班、中班、晚班,并且
每个班次的工作时间为连续八个小时。
主要劳动法规约束有:
1)每位护士一日最多只能进行一个班次的工作;
2)每一个排班周期内,每位护士的最长工作时间不能超过规定的上限,亦不能少于规定的下限;
3)每日工作的各种级别的护士数都不允许少于规定的需求数,并且任何护
士不允许进行要求比自己级别高的护士的护理工作,反之可以;
4)上了晚班后,另一天不能上早班。
对于违反这些约束的行为在程序设计的时候都将记入惩罚值,视为影响方案
的因素。
现在给定N个护士,可以用一个二维表格[46](如(3-2)所示)来表示一个
护士排班方案。
其中,每个空格处填上为每位护士安排早班、中班、晚班、休班的一种。
如果表中的方案能够满足上述全部约束,则为可行方案,否则为不可行方案。
表2-1排班表
星期
护士序号
周日
周一
周二
周三
周四
周五
周六
1
2
…
N
2.2护士排班问题整数规划模型
针对上述护士排班问题,本节将建立一个带有一系列劳动法规约束的且考虑护士级别差异的护士排班整数规划模型。
整数规划的矩阵表达式一般可以做如下表达:
Max(min)cX
s.tAX
B
X={
|i=0,1,2,…n},
Z
为了表述方便,首先做如下假设和定义:
共有n为护士,分属u个级别,记I={1,2,…,n},表示护士集合;记S={1,2,…,u}表示护士级别集合;
S表示第i位护士的级别。
记排班周期为T;记J={1,2,…,m}表示一个周期T内的班次集合;记Wtup和WTlow分别表示一个排班周期内的护士的总工时的上限和下限。
上限不小于下限。
表示第i位护士进行第j个班次的工资成本(简称成本,用护士的等级表示);
表示第j班次对第g级别护士的需求数量。
表示第i个护士对第j个班次的偏好程度。
对于偏好程度设置五个等级:
非常喜欢,喜欢,一般,不喜欢,非常不喜欢,依次用1到5五个数字表示,并定义
{1,2,3,4,5};
模型的目标函数为使总费用最小,总费用为工资成本加上偏好成本。
公式如(3-1):
(3-2)
表示工资成本占的比重,
表示偏好成本占的比重,两者之和为1
约束条件可以分为三类。
第一,每一个排班周期内,每位护士的最长工作时间不能超过规定的上限,亦不能少于规定的下限。
对应公式如(3-3):
WTlow
WTupi=1,2,…,n(3-4)
第二,每日工作的各种级别的护士数都不允许少于规定的需求数,并且
任何护士不允许进行要求比自己级别高的护士的护理工作,反之可以;对应公式如(3-5):
(3-6)
第三,|每位护士一日最多只能进行一个班次的工作;对应公式如(3-7):
(3-8)
其中,
第四,上了晚班后不能接着上另一天的早班。
对应公式如(3-5)
(3-5)
3基于模拟退火的护士排班算法
上一章对护士排班问题进行了数学建模,由于随着护士数的增加,用传统的线性规划方法会陷入“维数灾”。
元启发式算法这种时候就能取到很好的作用。
本章主要讲述基于模拟退火的护士排班算法,首先介绍模拟退火算法,然后将模拟退火算法用到护士排班问题。
3.1模拟退火算法概述
模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。
根据Metropolis准则,粒子在温度T时趋于平衡的概率为e-ΔE/(kT),其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann常数。
用固体退火模拟组合优化问题,将内能E模拟为目标函数值f,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:
由初始解i和控制参数初值t开始,对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程。
退火过程由冷却进度表(CoolingSchedule)控制,包括控制参数的初值t及其衰减因子Δt、每个t值时的迭代次数L和停止条件S。
模拟退火算法可以分解为解空间、目标函数和初始解三部分。
模拟退火的基本思想:
(1)初始化:
初始温度T(充分大),初始解状态S(是算法迭代的起点),每个T值的迭代次数L
(2)对k=1,……,L做第(3)至第6步:
(3)产生新解S′
(4)计算增量Δt′=C(S′)-C(S),其中C(S)为评价函数
(5)若Δt′<0则接受S′作为新的当前解,否则以概率exp(-Δt′/T)接受S′作为新的当前解.
(6)如果满足终止条件则输出当前解作为最优解,结束程序。
终止条件通常取为连续若干个新解都没有被接受时终止算法。
(7)T逐渐减少,且T->0,然后转第2步。
模拟退火算法新解的产生和接受可分为如下四个步骤:
第一步是由一个产生函数从当前解产生一个位于解空间的新解;为便于后续的计算和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的邻域结构,因而对冷却进度表的选取有一定的影响。
第二步是计算与新解所对应的目标函数差。
因为目标函数差仅由变换部分产生,所以目标函数差的计算最好按增量计算。
事实表明,对大多数应用而言,这是计算目标函数差的最快方法。
第三步是判断新解是否被接受,判断的依据是一个接受准则,最常用的接受准则是Metropo1is准则:
若Δt′<0则接受S′作为新的当前解S,否则以概率exp(-Δt′/T)接受S′作为新的当前解S。
第四步是当新解被确定接受时,用新解代替当前解,这只需将当前解中对应于产生新解时的变换部分予以实现,同时修正目标函数值即可。
此时,当前解实现了一次迭代。
可在此基础上开始下一轮试验。
而当新解被判定为舍弃时,则在原当前解的基础上继续下一轮试验。
模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关;模拟退火算法具有渐近收敛性,已在理论上被证明是一种以概率l收敛于全局最优解的全局优化算法;模拟退火算法具有并行性。
3.2基于模拟退火的护士排班算法设计
为便于阐述的方便这里先说明一个符号,
表示第i个护士做第j个班次的工作级别,它不允许高于护士的实际级别。
。
基于护士排班的算法框架跟模拟退火的算法框架大致相同,但是由于护士排班问题的具体特征,也会有些特殊的地方,比如方案的可行化过程。
对于很多问题要得到初始可行解很简单,但是对于护士排班问题,得到初始可行解往往是很复杂的,所以算法框架中,方案的可行化是重要的一个步骤。
算法的流程可以分为生成初始方案,可行化初始方案,生成新方案,判断是否接受新方案,判断是否满足终止准则。
算法流程描述如图3-1。
图3-1算法框架
本章接下来的小节将对图里面的各个环节进行详细阐述。
3.2.1初始解的生成
护士排班问题的解用一个n*m的矩阵表示,其中每个元素取值为0或者1。
每天有m/T个班次,前面T个班为第一类班次(如早班),最后面T个班次为最后一类班次(如晚班)。
每天依次从早班、中班、夜班、和休班中随机选择一个班型。
若选中的是早班,相应的班次该护士请假,或者其工作班次数也已经达到最大值,则该天的三个班型都赋值为0。
否则,如果该早班之前的晚班该护士不当班,则该班次赋值为1,当天的中班和晚班赋值为零;如果该早班之前的晚班该护士当班,则去查看该护士能否当中班或者晚班。
若选中的是中班或者晚班,相应的班次该护士请假,或者其工作班次数也已经达到最大值,则该天的三个班型都赋值为0。
否则,该班次赋值为1,当天的其他班赋值为零;
若选中的是休班,那么该天的三个班次都赋值为零。
每位护士的工作级别直接赋值为其自身的级别,这样可以保证
的约束。
由此就可以形成一个初始方案,即得到一个初始解。
由于考虑到对各个级别的护士的需求数等约束,还有可能某些护士没有达到最低班次数,初始解可能是不可行的。
需要先将之可行化,然后再不影响可行性的情况下,进行模拟退火的迭代过程。
并且该早班之前的晚班该护士不当班,其工作班次数也没有达到最大值,则赋值为1。
3.2.2方案可行化
由于护士排班问题很复杂,有很多约束条件,如果不能满足则为不可行解,因此方案的可行化是算法的重要内容之一。
根据初始化方法的特点,总结出会出现以下几种使得方案不可行的可能。
第一,护士的班次没有达到最低工作班次;第二,某班次的某级别护士需求数没有得到满足。
对于这两种情况,可以分别用增加班次和增加护士两种方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 模拟 退火 护士 调度 算法 研究 NP 问题