基于线性规划的护士排班优化问题.docx
- 文档编号:2913640
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:34
- 大小:124.45KB
基于线性规划的护士排班优化问题.docx
《基于线性规划的护士排班优化问题.docx》由会员分享,可在线阅读,更多相关《基于线性规划的护士排班优化问题.docx(34页珍藏版)》请在冰点文库上搜索。
基于线性规划的护士排班优化问题
基于线性规划的护士排班优化问题
姓名1:
学号:
专业:
姓名1:
学号:
专业:
日期:
2011年7月15日
基于线性规划的护士排班优化问题
摘要
本文研究的是关于医院护士排班最优问题,本文的主要思想是根据约束条件建立相关的线性规划模型,利用Lingo求解,分别计算出每天,每星期的最少护士数,并给出具体的排班方案。
问题一:
计算每天该科所需的最少护士数。
针对这一问,从各班次护士需求量考虑,依据每个护士每天至多工作8个小时,即上两个班次且两个班次不连上这一假定条件,假设每个时间段开始登记上班的人数为xi,建立规划模型,进而运用Lingo软件进行求解,从而求出每天该科所需最少护士数为145人。
问题二,以一个星期为周期,计算该科最少需签约多少护士。
针对第二问,依据题目给出的约束条件:
时间段02:
00-06:
00(大夜班)每个星期最多只排一次,且第二天必须休息。
经过本文规划约束可以得出每个星期该科至少需签约210名护士。
问题三,以一个星期为周期,试给出具体的排班方案。
依据问题二得出的结果,综合考虑题目中各约束条件,将一个星期(七天)六个班次设为42个班次,引进0,1变量,即
,建立线性规划模型,给出具体的排班方案,见附录1,由于有的排班人数大于该次排班的最少要求人数所以该方案不唯一。
问题四,计算最少需要多少护师职称以上的护士。
运用问题三的方法,增加约束条件,即每班次上班的护士中护师以上(包括护师)职称的所占比例不低于40%。
同样引进0,1变量,即
,以需要最少的护师职称以上的护士为目标函数,同样建立线性规划模型。
得出需要最少的护师(包括护师)职称以上的护士为:
84人。
关键词:
护士排班线性规划0-1变量Lingo
目录
1、问题重述4
2、问题分析5
3、模型假设5
4、符号说明6
5、模型建立与求解6
5.1问题一求解6
5.2问题二求解7
5.3问题三求解7
5.4问题四求解9
6、模型评价与改进10
参考文献10
附录11
附录一:
11
附录二:
12
1、问题重述
1.1基本条件
某医院某科室的一个工作日分为6个4小时时间长的时间段,每个时间段所需要的护士人员数各不相同。
每日每个时间段的人员需求量如下所示:
班次
该班时间段(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)每天至多工作8个小时,即上两个班次,两个班次不连上;
(2)第一天排班在时间段22:
00-02:
00(小夜班)的护士,第二天在时间段06:
00-10:
00不排班;
(3)时间段02:
00-06:
00(大夜班)每个星期最多只排一次,且第二天必须休息;
(4)每个星期每位护士工作40小时;
1.2需解决的问题
问题1:
每天该科所需的最少护士数?
问题2:
以一个星期为周期,该科最少需签约多少护士?
问题3:
以一个星期为周期,试给出具体的排班方案,该方案是否唯一?
问题4:
根据医院要求,每班次上班的护士中护师以上(包括护师)职称的所占比例不低于40%,问在护士数最少的条件下(第二问决定的最少护士数),最少需要多少护师职称以上(包括护师职称)的护士才能满足院方对职称的要求。
注:
护士职称评定共分五级别,分别是:
护士、护师、主管护师、副主任护师、主任护师。
2、问题分析
2.1问题背景
护士是医院日常运营的基础,科学合理地安排护士工作时间不仅能够缓解其压力,提高护理质量,而且能够降低医院的人力资源运营成本,提高医院的护理质量和工作积极性,保证护士心身健康,因此护士排班已成为医院管理工作的重要内容之一。
2.2具体问题分析
排班问题是一类带有一定约束条件的优化类问题。
在满足各时间段人员需求量的条件下,要对现有人员做出最优安排,从而达到医院的运营需求。
问题一的分析:
本问题需要解决的是该医院该科每天所需最少护士数,根据各时间段人员需求量表及题目给出的约束条件1,本文假设个时间段开始上班的人数为决策变量,所需护士数最少为目标函数,建立优化模型,进行求解。
问题二的分析:
本文题需解决的问题是以一个星期为周期,该科所需的最少护士数,由条件,时间段02:
00-06:
00(大夜班)每个星期最多只排一次,且第二天必须休息可以知道排在大夜班的人都不相同,故可计算出最少护士数。
问题三的分析:
本问题需给出一个星期内具体的排班方案,也就是说需要知道该班次谁上班,有多少人上班,为此,本问题引进0,1变量,建立优化模型,进行求解。
在满足每天至多工作8个小时,每班次不连上,每个星期工作40个小时;第一天排班在时间段22:
00-02:
00(小夜班)的护士,第二天在时间段,06:
00-10:
00不排班;时间段02:
00-06:
00(大夜班)每个星期最多只排一次,且第二天必须休息等的条件下,给出一个排班方案。
问题四的分析:
本文题需给出一个星期最少需要多少护师职称以上的护士。
相对于问题三,本文增加了一个条件,即每班次上班的护士中护师以上(包括护师)职称的所占比例不低于40%。
根据问题三的排班程序可知至少需要84位护师,再经过分析具体排班情况时,对其进行调整,得到最终结果。
3、模型假设
1、正常上班情况下,没人每天至多工作8个小时,即上两个班次,两个班次不连上。
2、第一天排班在时间段22:
00-02:
00(小夜班)的护士,第二天在时间段06:
00-10:
00不排班。
3、时间段02:
00-06:
00(大夜班)每个星期最多只排一次,且第二天必须休息;
4、护士工作时间按劳动法规定,即每个星期每位护士工作40小时;
5、每个护士不能缺勤。
6、一周工作日为七天。
4、符号说明
ai:
第i个时间段所需人员数;
xi:
安排在第i个时间段开始上班的人数;
z:
满足需求最少需要的护士人员总数;
xij:
第i班j号护士;
5、模型建立与求解
5.1问题一求解:
每天该科所需的最少护士数。
(1)模型建立
本文假设xi为安排在第i个时间段开始登记上班的人数并设为决策变量。
目标函数为该天各时间段开始上班的人数之和,即:
由题目中的约束条件:
每天至多工作8个小时,即上两个班次,两个班次不连上。
可以得出:
第三个时间段(14:
00-18:
00)+第一个时间段(6:
00-10:
00)>=第三个时间段所需的人员数a3,即
第四个时间段(18:
00-22:
00)+第二个时间段(10:
00-14:
00)>=第四个时间段所需人员数a4,即
以此类推,当i=1,2,...,6循环时,有
,i=1,2,...,6
综上所述:
目标函数:
min
约束条件:
(2)模型求解
编写程序,运用Lingo求解得出每天该科所需最少护士为145人。
程序见附录1。
5.2问题二求解:
以一个星期为周期,计算该科最少需签约的护士数。
由条件:
时间段02:
00-06:
00(大夜班)每个星期最多只排一次,且第二天必须休息,从中可以知道上大夜班的护士都不相同,一个星期中每天需要30个护士上大夜班,则一个星期所需最少护士数为:
30*7=210。
本问题的检验将在问题三中体现。
5.3问题三求解:
以一个星期为周期,给出具体的排班方案。
(1)模型建立
本问题需给出每个护士每天每班次的上班情况,为此本问题引进0,1变量,设xij表示第i个班次j号护士,其具体意义如下:
由于每天六个班次,则一个星期总共有42班次,即i取1,2,3...42。
约束条件如下:
1、每天至多工作8个小时,即上两个班次,即
j=1,2,...210
2、两个班次不连上,即
j=1,2,...210
3、第一天排班在时间段22:
00-02:
00(小夜班)的护士,第二天在时间段06:
00-10:
00不排班,即
j=1,2,...210
4、时间段02:
00-06:
00(大夜班)每个星期最多只排一次,且第二天必须休息,即
j=1,2,...210
5、每个星期每位护士工作40小时,即
,j=1,2,...210
(2)问题求解
编写程序,利用Lingo求解,程序见附录1,具体每人每天每班次的排班方案见附录2。
每天每班次的上班人数如表一。
从程序可以验证问题二中的145人为一个星期所需最少护士数。
表一人员分配表
星期
班次
星期一
星期二
星期三
星期四
星期五
星期六
星期天
6:
00-10:
00
113
60
60
60
60
60
60
10:
00-14:
00
70
71
70
71
70
70
70
14:
00-18:
00
62
60
60
60
61
61
60
18:
00-22:
00
50
52
50
53
51
50
50
22:
00-02:
00
22
20
20
20
22
21
20
02:
00-06:
00
30
30
30
30
30
30
30
5.3.1方案唯一性分析:
由表一知,星期一的第一个时间段,第三个时间段,第五时间段等都大于题目要求的最少护士数,应此交换这些多的人就可以排出多种方案,所以不唯一。
5.4问题四求解:
求最少需要的护师职称以上(包括护师职称)的护士。
问题四在以问题二的前提下,即确定了一个星期最少需要护士为145人,为此本问题做一下求解。
目标函数:
1.引进0,1变量
2.新增一约束条件:
,其它约束条件与问题三相同,在此不做重复。
3.编写程序求解,可得最少需要84位护师职称(包括护师职称)以上的护士才能满足院方对职称的要求。
6、模型评价与改进
6.1模型的优点
1.该模型将护士排班所要求的条件都用数学语言表达清楚了,非常符合题目意思,很好的解决了这一类问题。
实际医院的排班都可借鉴该模型对限制条件进行修改即可得到该院方的排班要求,所以本模型具有很好的通用性,实用性强。
而且是在满足医院要求下线人数下的优化,可以为医院减少开支。
2.该模型巧妙的将非线性问题转化为线性问题,避免了程序运行时间长等缺点。
3.在问题三中引进了0,1变量,直观易懂,将问题简化了,更容易着手解决问题。
6.2模型的缺点与改进
1.该模型得出的结果不是很明了,需要大量的处理工作才能制作真实的排班表。
2.该模型只考虑了一些劳动法约束等客观因素,并没有考虑护士请假约束和护士对工作时段偏好以及护士间配合默契程度的软约束。
鉴于此,该模型可进一步改进,即通过增加护士的工作时段偏好、相互配合默契程度等因素进一步扩展护士排班模型,使其在满足各种实际约束的同时更具人性化,实现“护士心意卡”排班方式。
参考文献
[1]姜启源,谢金星,叶俊.数学模型[M].北京:
高等教育出版社,2003.
[2]秦裕瑗,秦明复.运筹学简明教程[M].北京:
高等教育出版社,施普林格出版社,2000.
[3]韩大卫.管理运筹学[M].大连:
大连理工大学出版社,2006.
[4]
附录
附录一:
问题一程序:
model:
sets:
s/1..6/:
a,x;
endsets
data:
a=607060502030;
enddata
min=@sum(s(i):
x(i));
@for(s(i):
x(i)+x(@wrap(i-2,6))>=a(i));
@for(s(i):
@gin(x(i)));
End
问题三程序:
model:
sets:
r/1..210/;
b/1..42/:
a;
link(b,r):
x;
endsets
data:
a=60,70,60,50,20,30,60,70,60,50,20,30,60,70,60,50,20,30,60,70,60,50,20,30,60,70,60,50,20,30,60,70,60,50,20,30,60,70,60,50,20,30;
enddata
@for(r(j):
@sum(b(i)|i#GE#1#and#i#le#6:
x(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#7#and#i#le#12:
x(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#13#and#i#le#18:
x(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#19#and#i#le#24:
x(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#25#and#i#le#30:
x(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#31#and#i#le#36:
x(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#37#and#i#le#42:
x(i,j))<2);
@for(r(j):
@for(b(i)|i#GE#1#and#i#le#5:
x(i,j)+x(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#7#and#i#le#11:
x(i,j)+x(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#13#and#i#le#17:
x(i,j)+x(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#19#and#i#le#23:
x(i,j)+x(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#25#and#i#le#29:
x(i,j)+x(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#31#and#i#le#35:
x(i,j)+x(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#37#and#i#le#41:
x(i,j)+x(i+1,j)<1));
@for(r(j):
@for(b(i)|i#ge#1#and#i#le#6:
x(6*i-1,j)+x(6*i+1,j)<1));
@for(r(j):
@sum(r(j):
x(6,j)+x(12,j)+x(18,j)+x(24,j)+x(30,j)+x(36,j)+x(42,j))<1);
@for(r(j):
@for(b(i)|i#ge#1#and#i#le#6:
2*x(6*i,j)+(x(6*i+1,j)+x(6*i+2,j)+x(6*i+3,j)+x(6*i+4,j)+x(6*i+5,j)+x(6*i+6,j))<2));
@for(r(j):
@sum(b(i)|i#GE#1#and#i#le#42:
x(i,j))=10);
@for(b(i):
@sum(r(j):
x(i,j))>a(i));
@for(link(i,j):
@bin(x(i,j)));
End
问题四程序:
model:
sets:
r/1..210/:
x;
b/1..42/:
a;
link(b,r):
m;
endsets
data:
a=60,70,60,50,20,30,60,70,60,50,20,30,60,70,60,50,20,30,60,70,60,50,20,30,60,70,60,50,20,30,60,70,60,50,20,30,60,70,60,50,20,30;
enddata
min=@sum(r:
x);
@for(r(j):
@sum(b(i)|i#GE#1#and#i#le#6:
m(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#7#and#i#le#12:
m(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#13#and#i#le#18:
m(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#19#and#i#le#24:
m(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#25#and#i#le#30:
m(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#31#and#i#le#36:
m(i,j))<2);
@for(r(j):
@sum(b(i)|i#GE#37#and#i#le#42:
m(i,j))<2);
@for(r(j):
@for(b(i)|i#GE#1#and#i#le#5:
m(i,j)+m(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#7#and#i#le#11:
m(i,j)+m(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#13#and#i#le#17:
m(i,j)+m(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#19#and#i#le#23:
m(i,j)+m(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#25#and#i#le#29:
m(i,j)+m(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#31#and#i#le#35:
m(i,j)+m(i+1,j)<1));
@for(r(j):
@for(b(i)|i#GE#37#and#i#le#41:
m(i,j)+m(i+1,j)<1));
@for(r(j):
@for(b(i)|i#ge#1#and#i#le#6:
m(6*i-1,j)+m(6*i+1,j)<1));
@for(r(j):
@sum(r(j):
m(6,j)+m(12,j)+m(18,j)+m(24,j)+m(30,j)+m(36,j)+m(42,j))<1);
@for(r(j):
@for(b(i)|i#ge#1#and#i#le#6:
2*m(6*i,j)+(m(6*i+1,j)+m(6*i+2,j)+m(6*i+3,j)+m(6*i+4,j)+m(6*i+5,j)+m(6*i+6,j))<2));
@for(r(j):
@sum(b(i)|i#GE#1#and#i#le#42:
m(i,j))=10);
@for(b(i):
@sum(r(j):
m(i,j))>a(i)*0.4);
@for(link(i,j):
@bin(m(i,j)));
@for(r(i):
@bin(x(i)));
End
附录二:
问题三护士具体排班方案:
周一第1班护士编号
周一第2班护士编号
周一第3班护士编号
周一第4班护士编号
周一第5班护士编号
周一第6班护士编号
周二第1班护士编号
周二第2班护士编号
周二第3班护士编号
周二第4班护士编号
周二第5班护士编号
周二第6班护士编号
15
11
1
3
1
10
20
2
1
3
4
2
21
12
2
9
2
16
21
3
4
9
6
5
22
14
4
10
4
17
23
7
5
13
7
32
24
19
6
11
5
18
27
8
6
14
15
33
25
20
7
15
6
19
31
9
23
21
29
51
26
23
8
35
7
24
32
11
29
22
42
56
27
29
17
36
8
25
39
12
30
31
46
59
30
34
21
40
12
28
44
13
33
39
49
62
31
35
26
46
33
37
48
14
35
40
52
67
32
36
27
49
34
38
55
15
41
47
61
69
39
37
28
53
43
45
58
22
43
48
95
70
41
38
30
55
52
50
60
26
44
53
96
73
42
40
31
56
69
81
63
34
49
54
99
80
43
48
33
62
74
83
64
36
51
55
112
89
44
50
41
67
108
85
65
40
58
56
113
92
45
57
51
70
115
86
71
42
62
57
115
93
46
62
58
76
152
105
76
47
63
64
131
94
47
63
59
88
155
109
77
52
65
75
139
97
49
64
61
93
161
122
78
53
66
82
185
106
51
65
66
94
177
127
93
54
68
88
190
111
52
68
75
102
186
136
95
57
71
101
117
53
69
79
114
188
150
97
59
77
103
128
54
72
81
119
154
98
61
78
108
129
55
74
82
121
157
100
69
80
110
137
56
76
84
126
162
101
72
90
111
143
58
83
87
141
169
102
73
96
116
147
59
88
89
142
175
107
74
99
118
164
60
99
91
148
178
110
79
102
119
199
61
101
92
151
183
114
82
117
120
201
67
102
95
163
189
120
84
121
124
202
71
103
96
166
121
87
123
125
73
105
97
170
123
89
129
126
75
110
100
174
125
91
130
137
77
114
104
179
128
92
131
138
78
119
106
190
130
94
132
140
79
121
107
191
132
103
133
141
80
122
111
196
134
104
134
145
82
124
112
197
141
106
135
147
84
126
113
199
144
113
142
163
85
127
116
200
151
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 线性规划 护士 排班 优化 问题
![提示](https://static.bingdoc.com/images/bang_tan.gif)