第三次培训论文.docx
- 文档编号:3415154
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:19
- 大小:135.24KB
第三次培训论文.docx
《第三次培训论文.docx》由会员分享,可在线阅读,更多相关《第三次培训论文.docx(19页珍藏版)》请在冰豆网上搜索。
第三次培训论文
数学建模暑期培训第一次论文
论文题目:
基于线性规划的护士排班模型
姓名:
卢丰海学号:
09102126专业:
信息与计算科学
姓名:
曾洁学号:
09032104专业:
环境工程
2011年7月15日
基于线性规划的护士排班模型
摘要
本文采用运筹学中的优化配置思想,依据题目要求,分别建立了整数线性规划模型及0-1整数规划模型来求解护士排班问题。
针对问题一,本文以每天该科所需的最少护士数Z为目标函数,以每班次所需安排的护士数xi为决策变量,以所给该科室每日每班次至少需要护士的数量Di为约束条件,最后用LINGO编程求解得,每天该科所需的最少护士数为145人次。
针对问题二,本文首先引入0-1变量xijk,其表示第k位护士是否被安排在第j天的第i班次。
再以该科室每班次至少需要护士的数量Di及排班要求为约束条件,建立0-1整数规划模型。
最后用LINGO编程求解得,该科所需签约的最少护士数为210人次。
经统计具体排班方案上的数据,得一周内每天每班次所安排的人数见下表:
(具体排班方案见附录)
表1
星期
班次
一
二
三
四
五
六
日
1
83
60
60
61
61
61
60
2
70
70
70
70
71
70
70
3
64
60
60
60
61
60
60
4
51
50
53
50
51
51
50
5
20
20
22
20
20
22
48
6
30
30
30
30
30
30
30
针对问题三,本文根据签约护士的一周班次安排表,便得出第i天第j班次所需的护士总数Aij,本文以Aij为决策变量,以该科所需的最少护师及以上职称的护士数W为目标函数,以每班次上班的护师及以上(包括护师)职称的所占总护士的比例应不低于40%为约束条件,建立线性规划模型,将所得的W向上取整即得该科护师及以上职称的最少护士数为85人。
关键词:
护士调度线性规划0-1整数规划护士级别
§1问题的重述
一、问题的背景
护士是医院日常运营的基础,科学合理地安排护士工作时间不仅能够缓解其压力,提高护理质量,而且能够降低医院的人力资源运营成本,因此护士排班已成为医院管理工作的重要内容之一。
以下是某医院某科室每日至少需要护士的数量:
表2
班次
该班时间段(24小时)
该班所需最少护士数
1
6:
00-10:
00
60
2
10:
00-14:
00
70
3
14:
00-18:
00
60
4
18:
00-22:
00
50
5
22:
00-02:
00
20
6
02:
00-06:
00
30
每班的护士在值班开始时向病房报道,排班需满足:
1、每个星期每位护士工作40小时。
2、每天至多工作8个小时,即上两个班次,两个班次不连上;
3、时间段02:
00-06:
00(大夜班)每个星期只排一次,且第二天必须休息;
4、第一天排班在时间段22:
00-02:
00(小夜班)的护士,第二天在时间段06:
00-10:
00不排班;
二、需解决的问题
为满足该医院各班所需要的护士数,需建立合适的数学模型,为院方领导解决如下问题:
问题一:
依据上述数据和排班要求,求解出每天该科所需的最少护士数。
问题二:
以一个星期为周期,求出该科最少需签约的护士人数,并给出具体的排班方案,并判断该方案是否唯一。
问题三:
以问题二求解护士数的结果为前提,求解出满足院方对职称要求的最少护师职称以上(包括护师职称)的护士数。
注:
(1)护士职称评定共分五级别,分别是:
护士、护师、主管护师、副主任护士、主任护师。
(2)根据医院要求,每班次上班的护士中护师以上(包括护师)职称的所占比例不低于40%。
§2问题的分析
由于护士排班中存在一系列劳动法规约束,外加需要考虑不同护士的能力级别差异,因此护士排班问题是较为复杂的组合优化问题。
经分析,对该问题处理要分两个步骤进行:
第一,确定该科所不同周期时所需签约的最少护士数,并给出具体的排班方案;第二,在最少人数及排班方案已确定的条件下,求解出满足院方对职称要求的最少护师职称以上(包括护师职称)的护士人数。
一、对问题的具体分析
1、问题一的分析:
问题要求依据所给数据及排班要求,求解出每天该科所需的最少护士人数。
经分析,本文认为这是一个典型的线性规划建模及求解的问题。
故该问题的求解步奏如下:
首先应确定该问题的决策变量,再确定目标函数,并表示出所有的约束条件,最后用LINGO编程求解即可。
2、问题二的分析:
问题要求以一个星期为周期,求出该科最少需签约的护士人数,并给出具体的排班方案,并判断该方案是否唯一。
经分析,此问亦是建立与求解线性规划模型的过程,故确定恰当合适的决策变量、目标函数及约束条件求得正确结果的关键。
3、问题三的分析:
问题要求以问题二求解护士数的结果为前提,求解出满足院方对职称要求的最少护师职称以上(包括护师职称)的护士数。
经分析,本文根据签约护士的一周班次安排表,便得出第i天第j班次所需的护士总数,本文以其为决策变量,以该科所需的最少护师及以上职称的护士数W为目标函数,以每班次上班的护师及以上(包括护师)职称的所占总护士的比例应不低于40%为约束条件,建立线性规划模型,将所得的W向上取整即得该科护师及以上职称的最少护士数。
§3模型的假设
1、假设所安排的护士准时上下班;
2、假设忽略护士对班次的个人偏好;
3、假设忽略国家指定假期来进行排班;
4、假设所安排的护士无请假等特殊缺席情况发生;
5、假设每班次上班的护士中护师以上(包括护师)职称的所占比例为40%。
6、假设任何护士允许进行等于或低于自己级别能力的护理工作,但不允许进行超过自己级别能力的护理工作。
§4名词解释与符号说明
序号
符号
符号说明
1
Xi
表示第i班次的护士数
2
Z
表示为一天中所安排的最少护士总量
3
Dij
表示第j天第i班次所需的最少护士数
4
Xijk
表示第k位护士被安排上第j天的第i次班
5
Aij
表示以一星期为周期每天每班次所需的护士总数
6
yij
表示每天每班次护师及以上职称的护士人数
7
W
表示该科护师及以上职称的护士人次
§5模型的建立与求解
从所要解决的的问题和对问题所做的假设出发,本文对问题一建立了模型Ⅰ,求得每天该科所需的最少护士数;对问题二建立了模型Ⅱ,在以一星期为周期的前提下,求得一周内该科至少需签约的护理人员数,并得到每个护士的具体排班方案;对问题三建立了模型Ⅲ,求解出该科护师及以上职称的护士人次。
一、问题一的求解
1、模型Ⅰ的一般表达式:
此问中本文以每天该科所需的护士数最少为目标函数,以第i班次的护士数为决策便变量,以所给该科室每日每班次至少需要护士的数量为约束条件,建立如下线性规划模型:
式中xi为第i班次所安排的护士数量,Z为一天中所安排的最少护士总量。
2、模型Ⅰ的求解
本文通过用LINGO编程求解,解得每天该科所需的最少护士数为145人次。
(程序见附录)
二、问题二的求解
1、模型Ⅱ的建立过程
经分析,此问中本文以第j天第i班次的护士数为决策便变量,以所给该科室每日每班次至少需要护士的数量及排班要求为约束条件,建立下列约束式:
假设xijk为第k位护士被安排上第j天的第i次班,为了方便模型的建立及求解,本文假设xijk为0-1变量,即有:
由题目可知每位护士每周必须上40小时,即要求每周必须上10个班次,则有:
(1)
又由每天每位护士至多上工作8个小时,即每位护士至多每天上两个班次,则有:
(2)
由规定每位护士每天上两个班次且两个班次不连上,则有:
(3)
由第一天排班在时间段22:
00-02:
00(小夜班)的护士,第二天在时间段06:
00-10:
00不排班,则有:
(4)
由时间段02:
00-06:
00(大夜班)每个星期每位护士只排一次,且第二天必须休息,则有:
(5)
(6)
又由每个班次规定至少需要的人数,见下表:
班次
该班时间段(24小时)
该班所需最少护士数
1
6:
00-10:
00
60
2
10:
00-14:
00
70
3
14:
00-18:
00
60
4
18:
00-22:
00
50
5
22:
00-02:
00
20
6
02:
00-06:
00
30
则得如下约束式子:
(7)
2、模型Ⅱ的一般表达式:
联立上面
(1)至(8)式,得如下0-1整数规划模型:
s.t
(9)
运用lingo程序编程(程序见附录)求解可知每个护士的具体排班方案(见附录):
经统计具体排班方案上所给的数据,得一周内每天每班次所安排的人数如下表:
问题二班次安排人数表
星期
班次
一
二
三
四
五
六
日
1
83
60
60
61
61
61
60
2
70
70
70
70
71
70
70
3
64
60
60
60
61
60
60
4
51
50
53
50
51
51
50
5
20
20
22
20
20
22
48
6
30
30
30
30
30
30
30
3、模型Ⅱ结果分析:
据题意每位护士一星期应上10次班,经分析统计得一星期所有护士的总上班次数为2100次,故可得一周内该科至少需签约210人次的护理人员;再将上述一星期人数安排表与表一对比可知,每天每班次所安排的人数都符合该医院的要求;最后分析附件表格可知所得的排班方案皆符合院方所设的的排班条件。
三、问题三的求解
1、模型Ⅲ的建立及求解
根据医院要求,在签约最少护士的条件下每班次上班的护士中护师以上(包括护师)职称的所占比例不低于40%。
根据签约护士的一周班次安排表,便得出每天每班次所需的护士总数Aij,则取每班次总人数的40%便得每天每班次护师职称以上(包括护师职称)的护士人数yij,即得如下方程:
yij>=0.4Aij
将所得结果求和便得如下模型:
最后用LINGO编程求解,将所得的W向上取整,即得该科护师及以上职称的护士人次为85人次。
§6模型的检验和进一步讨论
一、模型检验
本文将模型二中所得的排班结果与题目中的要求进行对照,具体过程如下:
据题意每位护士一星期应上10次班,经分析统计得一星期所有护士的总上班次数为2100次,故可得一周内该科至少需签约210人次的护理人员;再将上述一星期人数安排表与表一对比可知,每天每班次所安排的人数都符合该医院的要求;最后分析附件表格可知所得的排班方案皆符合院方所设的的排班条件。
故所得模型是可靠的。
二、模型的进一步讨论:
对于本文中的模型,还可以综合考虑多一些人性化的因素,如护士对班次的喜好问题、护士因特殊问题而请假缺席的情况,以及考虑国家法定假期对班次安排的影响,使得模型运用的更加方便、灵活,更贴近实际,以减轻管理人员的工作量,提升护士工作时的心情愉悦指数及工作效率。
§7模型的评价与推广
一、模型的优缺点
1、优点:
⑴利用线性规划的思想来求解护士调度问题,其方法简便、直观、快捷,可操作性强;
⑵本文建立0-1整数规划模型,将所有约束条件统一化,运用LINGO软件即可求解所建的模型,费时少。
2、缺点:
⑴本模型的建立并未考虑到护士对班次的喜好问题及护士因特殊问题而请假缺席的情况。
⑵本文中的模型二是以一星期为周期的连续性模型,忽略了对国家法定假期考虑。
二、模型的推广:
如今护理人员缺编已成为全世界普遍面临的问题。
其缺编的原因有多种,而解决方法亦有多样,其中之一就是合理安排班次。
对于护士排班这一复杂问题,没有一种单一的模型是通用的,即使是在同一科室中,一个模型的目标功能和限制条件在不同时期也会有很大不同。
故本文的护士排班模型仅能适用于与本文中限制条件相类似的排班问题,但即使如此,本文在一定程度上仍能为现实管理调度中的某些常见的排班问题提供参考,如列车服务人员调度问题、机乘服务人员的排班问题及安保室值班排班问题等等。
参考文献
[1]司守奎,数学建模算法与程序[M],2007(5):
11-26;
[2]武翠芳,郑晋昌,智慧型排班系統之设计-以服务业为例[J],国立中央大学人力资源管理研究所,2002(3):
19-22.;
[3]刘晓荣,陈国良,护士排班决策支持系统模型的研究[J],解放军护理杂志,2006
(2):
7-9;
[4]肖华勇,基于MATLAB和LINGO的数学实验[J],西北工业大学出版社,2009(3);
[5]沈吟东,苏光辉,带约束的护士排班模型和基于变换规则的优化算[J],计算机工程与科学,2010(7):
32.
附录
1、模型一的LINGO求解程序
model:
sets:
shuliang/1..9/:
x;
endsets
min=x
(1)+x
(2)+x(3)+x(4)+x(5)+x(6);!
!
x
(1)..x(6)表示每班次登记护士人数;
x
(1)>=60;
x
(2)>=70;
x
(2)=x(7)+x(8)+x(9);
x
(1)+x(3)>=60;
x(7)+x(4)>=50;
x(8)+x(5)>=20;
x(6)+x(9)+x(4)>=30;
end
2、模型一的求解结果:
Globaloptimalsolutionfound.
Objectivevalue:
145.0000
Infeasibilities:
0.000000
Totalsolveriterations:
4
VariableValueReducedCost
X
(1)60.000000.000000
X
(2)70.000000.000000
X(3)0.0000001.000000
X(4)15.000000.000000
X(5)0.0000000.5000000
X(6)0.0000000.5000000
X(7)35.000000.000000
X(8)20.000000.000000
X(9)15.000000.000000
RowSlackorSurplusDualPrice
1145.0000-1.000000
20.000000-1.000000
30.000000-0.5000000
40.000000-0.5000000
50.0000000.000000
60.000000-0.5000000
70.000000-0.5000000
80.000000-0.5000000
3、模型二的LINGO求解程序
model:
sets:
set1/1..42/:
shift,a;
set2/1..209/:
staff;
link(set1,set2):
x;
endsets
data:
a=607060502030607060502030607060502030607060502030607060502030607060502030607060502030;
enddata
@sum(set2(j):
x(1,j))>60;
@sum(set2(j):
x(2,j))>70;
@sum(set2(j):
x(3,j))>60;
@sum(set2(j):
x(4,j))>50;
@sum(set2(j):
x(5,j))>20;
@sum(set2(j):
x(6,j))>30;
@sum(set2(j):
x(7,j))>60;
@sum(set2(j):
x(8,j))>70;
@sum(set2(j):
x(9,j))>60;
@sum(set2(j):
x(10,j))>50;
@sum(set2(j):
x(11,j))>20;
@sum(set2(j):
x(12,j))>30;
@sum(set2(j):
x(13,j))>60;
@sum(set2(j):
x(14,j))>70;
@sum(set2(j):
x(15,j))>60;
@sum(set2(j):
x(16,j))>50;
@sum(set2(j):
x(17,j))>20;
@sum(set2(j):
x(18,j))>30;
@sum(set2(j):
x(19,j))>60;
@sum(set2(j):
x(20,j))>70;
@sum(set2(j):
x(21,j))>60;
@sum(set2(j):
x(22,j))>50;
@sum(set2(j):
x(23,j))>20;
@sum(set2(j):
x(24,j))>30;
@sum(set2(j):
x(25,j))>60;
@sum(set2(j):
x(26,j))>70;
@sum(set2(j):
x(27,j))>60;
@sum(set2(j):
x(28,j))>50;
@sum(set2(j):
x(29,j))>20;
@sum(set2(j):
x(30,j))>30;
@sum(set2(j):
x(31,j))>60;
@sum(set2(j):
x(32,j))>70;
@sum(set2(j):
x(33,j))>60;
@sum(set2(j):
x(34,j))>50;
@sum(set2(j):
x(35,j))>20;
@sum(set2(j):
x(36,j))>30;
@sum(set2(j):
x(37,j))>60;
@sum(set2(j):
x(38,j))>70;
@sum(set2(j):
x(39,j))>60;
@sum(set2(j):
x(40,j))>50;
@sum(set2(j):
x(41,j))>20;
@sum(set2(j):
x(42,j))>30;
@for(set2(j):
x(1,j)+x(2,j)<1;);@for(set2(j):
x(2,j)+x(3,j)<1;);@for(set2(j):
x(3,j)+x(4,j)<1;);@for(set2(j):
x(4,j)+x(5,j)<1;);
@for(set2(j):
x(6,j)+x(5,j)<1;);@for(set2(j):
x(6,j)+x(7,j)<1;);@for(set2(j):
x(7,j)+x(8,j)<1;);@for(set2(j):
x(8,j)+x(9,j)<1;);
@for(set2(j):
x(9,j)+x(10,j)<1;);@for(set2(j):
x(10,j)+x(11,j)<1;);@for(set2(j):
x(11,j)+x(12,j)<1;);
@for(set2(j):
x(13,j)+x(12,j)<1;);@for(set2(j):
x(13,j)+x(14,j)<1;);@for(set2(j):
x(14,j)+x(15,j)<1;);
@for(set2(j):
x(15,j)+x(16,j)<1;);@for(set2(j):
x(16,j)+x(17,j)<1;);@for(set2(j):
x(18,j)+x(17,j)<1;);
@for(set2(j):
x(18,j)+x(19,j)<1;);@for(set2(j):
x(19,j)+x(20,j)<1;);@for(set2(j):
x(21,j)+x(20,j)<1;);
@for(set2(j):
x(21,j)+x(22,j)<1;);@for(set2(j):
x(23,j)+x(22,j)<1;);@for(set2(j):
x(24,j)+x(23,j)<1;);
@for(set2(j):
x(25,j)+x(24,j)<1;);@for(set2(j):
x(26,j)+x(25,j)<1;);@for(set2(j):
x(27,j)+x(26,j)<1;);
@for(set2(j):
x(28,j)+x(27,j)<1;);@for(set2(j):
x(29,j)+x(28,j)<1;);@for(set2(j):
x(30,j)+x(29,j)<1;);
@for(set2(j):
x(31,j)+x(30,j)<1;);@for(set2(j):
x(31,j)+x(32,j)<1;);@for(set2(j):
x(33,j)+x(32,j)<1;);
@for(set2(j):
x(34,j)+x(33,j)<1;);@for(set2(j):
x(34,j)+x(35,j)<1;);@for(set2(j):
x(35,j)+x(36,j)<1;);
@for(set2(j):
x(36,j)+x(37,j)<1;);@for(set2(j):
x(37,j)+x(38,j)<1;);@for(set2(j):
x(38,j)+x(39,j)<1;);
@for(set2(j):
x(39,j)+x(40,j)<1;);@for(set2(j):
x(40,j)+x(41,j)<1;);@for(set2(j):
x(41,j)+x(42,j)<1;);@for(set2(j):
x(1,j)+x(42,j)<1;);
@for(set2(j):
x(5,j)+x(7,j)<1;);@for(set2(j):
x(11,j)+x(13,j)<1;);@for(set2(j):
x(19,j)+x(17,j)<1;);@for(set2(j):
x(23,j)+x(25,j)<1;);
@for(set2(j):
x(29,j)+x(31,j)<1;);@for(set2(j):
x(35,j)+x(37,j)<1;);@for(set2(j):
x(41,j)+x(1,j)<1;);
@for(set2(j):
2*x(6,j)+x(7,j)+x(8,j)+x(9,j)+x(10,j)+x(11,j)+x(12,j)<2;);
@for(set2(j):
2*x(12,j)+x(13,j)+x(14,j)+x(15,j)+x(16,j)+x(17,j)+x(18,j)<2;);
@for(set2(j):
2*x(18,j)+x(19,j)+x(20,j)+x(21,j)+x(22,j)+x(23,j)+x(24,j)<2;);
@for(set2(j):
2*x(24,j)+x(25,j)+x(26,j)+x(27,j)+x(28,j)+x(29,j)+x(30,j)<2;);
@for(set2(j):
2*x(30,j)+x(31,j)+x(32,j)+x(33,j)+x(34,j)+x(35,j)+x(36,j)<2;);
@for(set2(j):
2*x(36,j)+x(37,j)+x(38,j)+x(39,j)+x(40,j)+x(41,j)+x(42,j)<2;);
@for(set2(j):
2*x(42,j)+x(1,j)+x(2,j)+x(3,j)+x(4,j)+x(5,j)+x(6,j)<2;);
@for(set2(j):
x(1,j)+x(2,j)+x(3,j)+x(4,j)+x(5,j)+x(6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三次 培训 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)