1、1长征医院的护士值班计划依颖(2010201146)李娇(2010200998)一、问题提出长征医院是长宁市的一所区级医院, 该院每天各时间区段内需求的值班护士数如表1 所示. 表 1时间区段 6: 00-10:00 10:00-14:00 14:00-18:00 18:00-22:00 22:00-6:00(次日)需求数 18 20 19 17 12该医院护士上班分五个班次, 每班 8h, 具体上班时间为第一班 2:0010:00, 第二班6:0014:00, 第三班 10:0018:00, 第四班 14:0022:00, 第五班 18:002:00(次日). 每名护士每周上 5 个班, 并
2、被安排在不同日子, 有一名总护士长负责护士的值班安排计划. 值班方案要做到在人员或经济上比较节省, 又做到尽可能合情合理. 下面是一些正在考虑中的值班方案: 方案 1 每名护士连续上班 5 天, 休息 2 天, 并从上班第一天起按从上第一班到第五班顺序安排. 例如第一名护士从周一开始上班, 则她于周一上第一班, 周二上第二班, , 周五上第五班;另一名护士若从周三起上班, 则她于周三上第一班, 周四上第二班, , 周日上第五班, 等等. 方案 2 考虑到按上述方案中每名护士在周末(周六、周日)两天内休息安排不均匀. 于是规定每名护士在周六、周日两天内安排一天、且只安排一天休息, 再在周一至周五
3、期间安排 4 个班, 同样上班的五天内分别顺序安排 5 个不同班次. 在对第 1、2 方案建立线性规划模型并求解后, 发现方案 2 虽然在安排周末休息上比较合理, 但所需值班人数要比第 1 方案有较多增加, 经济上不太合算, 于是又提出了第 3 方案. 方案 3 在方案 2 基础上, 动员一部分护士放弃周末休息, 即每周在周一至周五间由总护士长给安排三天值班, 加周六周日共上五个班, 同样五个班分别安排不同班次. 作为奖励, 规定放弃周末休息的护士, 其工资和奖金总额比其他护士增加 a%. 根据上述, 帮助长征医院的总护士长分析研究: (a) 对方案 1、2 建立使值班护士人数为最少的线性规划
4、模型并求解;(b) 对方案 3, 同样建立使值班护士人数为最少的线性规划模型并求解, 然后回答 a的值为多大时, 第 3 方案较第 2 方案更经济;2.1 对方案 1 的分析二、符号与假设需注意处: 要求连续上班 5 天(,27)ix: 从星期 i开始上班的护士人数. 其值班安排表如下 : 2表 2 方案 1 护士值班安排模型星期班次 星期一 星期二 星期三 星期四 星期五 星期六 星期日2: 00-10: 00 1x2x3x4x5x6x7x6: 00-14: 00 712345610: 00-18: 00 6x7x1x2x3x4x5x14: 00-22: 00 567123418: 00-2
5、: 00 4x5x6x7x1x2x3x三、建模与求解由此可对方案 1 建立如下线性规划模型: min572346zxxx.st0712650423012(,7)xxxi方案 1 线性规划模型的最优解为:,12,12,84;57346xxz方案 1 的护士值班安排如下表所示: 方案 1 的护士值班安排星期 1 星期 2 星期 3 星期 4 星期 5 星期 6 星期日星 期班32: 00-10: 00 12 12 12 12 12 12 126: 00-14: 00 12 12 12 12 12 12 1210: 00-18: 00 12 12 12 12 12 12 1214: 00-22: 0
6、0 12 12 12 12 12 12 1218: 00-2: 00 12 12 12 12 12 12 122.2 对方案 2 的分析 二、符号与假设(1)因为每名护士在周六、周日两天里必须工作一天, 安排休息一天. (2)周一到周五连续安排 4 个班, 所以可以先安排周末的护士值班情况: 周六、周末两天共 10 个班次, 用 (120)xj 表示周六周末两天 10 个班次的护士人数, 其中 ,51x 分别代表周六第 1 个到第 5 个班次的护士人数, 610x 分别代表周日从第 1 个到第 5 个班次的护士人数. 其值班安排表如下: 表 3 方案 2 护士值班安排模型星期班次 星期一 星期
7、二 星期三 星期四 星期五 星期六 星期日2: 00-10: 00 10x5+ 9x4+ 8x3+ 7x21x6x6: 00-14: 00 6+ 10+ + 3710: 00-18: 00 7x2+ 6x+ 5x+ 94xx8x14: 00-22: 00 83+ 7+ 1+ 05918: 00-2: 00 9x4+ 8x+ x26x1x10注意: 第五班次不与第一班次时间重合, 所以要考虑第五班次的 22:002:00 时间段和第一班次 2:006:00 时间班次, 再结合图表信息得到约束条件如下. 三、建模与求解 2由 此 可 对 方 案 建 立 如 下 线 性 规 划 模 型 :min57
8、13468910xxxw=+.st星 期次41860259418731207634208197613098541790248173659xxxxxxx+21(,59,10)0ixj方案 2 线性规划模型的最优解为: 12,8,12,12,357346xxxx89107,xx,12w方案 2 的护士值班安排如下表所示: 方案 2 的护士值班安排星期 1 星期 2 星期 3 星期 4 星期 5 星期 6 星期日2: 00-10: 00 12 24 19 21 12 12 126: 00-14: 00 12 24 24 19 8 12 1310: 00-18: 00 13 24 24 24 12 8
9、 714: 00-22: 00 7 21 24 24 12 12 1218: 00-2: 00 12 19 21 20 12 12 1252.3 对方案 3 的分析二、符号与假设(1)一部分护士周末两天都上班, 另外一部分护士周末只上一天. (2)连续上班 5 天, 休息 2 天. (3)同样 5 个班分别安排在不同的班次. 因此, 先安排周末的值班, 设: ,51x 周末两天都上班. ,61x 周末只上一天. 对方案 3 进行分析, 以表格的形式将方案 3 的护士值班安排表示如下表所示: 表 4 方案 3 护士值班安排模型图表做法分析:运用分组绑定法: (1)已知 ,51x 固定为周末上班,
10、 令 ,512134,1xxxx俩俩一组成为 A, 有 A 中的每一个组合看成一个组在分别和 ,78906配对组合成 B. (2)先排第一班次: 周六, 周日先排固定好, 已知 ,51x 固定, 周六时已经排 16x+, 由(1)知 6x在 B 组中和 415x一组, 把 4放到周一 , 周日时已经排 5, 在 B组 314和 0. 由于不重合原则, 只有 213x和 9x; 14和 0x分别放在周二、周三, 把剩下的两组 812x放在周四. 就排完了. (3)2-5 班次按 1 班次依次后退不重合排列. 三、建模与求解由此可对方案 3 建立如下线性规划模型: min5712468910213
11、45vxxxxxx; .st工作区段 星期 1 星期 2 星期 3 星期 4 星期 5 星期 6 星期日2: 00-10: 00 45x310x19x28x7x1x+51x6: 00-14: 00 64072210: 00-18: 00 12x571x156x1x9x38x1314: 00-22: 00 3287049418: 00-2: 00 14x139x128x1x6x510x5x618;5412839;718;716205;543141620;9;8;723820115xxxxxxxx19;4069;11;38247;6101;5497;3152;87;51234;9712;650xx
12、xxxxxxx;41,(,5);j方案 3 线性规划模型最优解为: 2,1,2,1,2,14,50,61,0,15574689234xxxxxxxxv7方案 3 的护士值班安排如下表所示: 方案 3 的护士值班安排星期 1 星期 2 星期 3 星期 4 星期 5 星期 6 星期日2: 00-10: 00 12 17 26 12 12 14 126: 00-14: 00 12 24 17 15 6 23 810: 00-18: 00 8 24 24 17 14 18 1214: 00-22: 00 12 14 24 12 5 26 1218: 00-2: 00 12 26 14 12 12 17
13、 12方案 1:f=1;1;1;1;1;1;1;A=-1 0 0 0 0 0 -10 0 0 0 0 -1 -10 0 0 0 -1 -1 00 0 0 -1 -1 0 00 0 -1 -1 0 0 00 -1 -1 0 0 0 0-1 -1 0 0 0 0 0 b=-20;-20;-20;-20;-20;-20;-20;lb=12;12;12;12;12;12;12;x,fval,exitflag,output,lambda=linprog(f,A,b,lb) A =-1 0 0 0 0 0 -10 0 0 0 0 -1 -10 0 0 0 -1 -1 00 0 0 -1 -1 0 00 0
14、 -1 -1 0 0 00 -1 -1 0 0 0 0-1 -1 0 0 0 0 0Optimization terminated.x =121212121212812fval =84exitflag =1output = iterations: 5algorithm: large-scale: interior pointcgiterations: 0message: Optimization terminated.constrviolation: 0firstorderopt: 1.1102e-016lambda = ineqlin: 7x1 doubleeqlin: 0x1 double
15、upper: 7x1 doublelower: 7x1 double 方案 2:f=1 1 1 1 1 1 1 1 1 1;A=0 0 0 0 0 -1 0 0 0 -1;-1 0 0 0 -1 0 0 0 -1 -1;0 0 0 -1 -1 0 0 -1 -1 0;0 0 -1 -1 0 0 -1 -1 0 0;-1 -1 0 0 0 0 0 0 0 0 ;0 -1 -1 0 0 0 0 0 0 0;0 0 0 0 0 -1 -1 0 0 0;0 0 -1 -1 0 0 0 0 0 0;0 0 0 0 0 0 -1 -1 0 0;0 -1 -1 0 0 -1 -1 0 0 0;-1 -1 0
16、 0 0 -1 0 0 0 -1;0 0 0 0 0 0 0 -1 -1 0;0 0 0 -1 -1 0 0 0 0 0;-1 0 0 0 -1 0 0 0 0 0;0 0 0 0 0 0 0 0 -1 -1;0 0 0 -1 0 0 0 -1 0 0 ;0 0 -1 0 0 0 -1 0 0 0;0 -1 0 0 0 -1 0 0 0 0 ;0 0 0 0 -1 0 0 0 -1 0b=-18;-20;-20;-18;-18;-20;-20;-20;-20;-19;-20;-19;-19;-17;-17;-12;-12;-12;-12;lb=12;12;0;0;12;12;0;0;12;12
17、;x,fval,exitflag,output,lambda=linprog(f,A,b,lb) A =0 0 0 0 0 -1 0 0 0 -1-1 0 0 0 -1 0 0 0 -1 -10 0 0 -1 -1 0 0 -1 -1 00 0 -1 -1 0 0 -1 -1 0 0-1 -1 0 0 0 0 0 0 0 00 -1 -1 0 0 0 0 0 0 00 0 0 0 0 -1 -1 0 0 090 0 -1 -1 0 0 0 0 0 00 0 0 0 0 0 -1 -1 0 00 -1 -1 0 0 -1 -1 0 0 0-1 -1 0 0 0 -1 0 0 0 -10 0 0
18、0 0 0 0 -1 -1 00 0 0 -1 -1 0 0 0 0 0-1 0 0 0 -1 0 0 0 0 00 0 0 0 0 0 0 0 -1 -10 0 0 -1 0 0 0 -1 0 00 0 -1 0 0 0 -1 0 0 00 -1 0 0 0 -1 0 0 0 00 0 0 0 -1 0 0 0 -1 0Optimization terminated.x =12.000012.000010.34989.650212.000012.000010.34989.650212.000012.0000fval =112.0000exitflag =1output = iteration
19、s: 7algorithm: large-scale: interior pointcgiterations: 0message: Optimization terminated.constrviolation: 0firstorderopt: 2.9683e-012lambda = ineqlin: 19x1 doubleeqlin: 0x1 double10upper: 10x1 doublelower: 10x1 double 方案 3:f=1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;A=0 0 0 -1 -1 0 0 0 0 0 -1 0 0 0 -1;-1 0 0 0
20、 -1 0 0 0 0 0 -1 -1 0 0 0;0 0 0 -1 -1 -1 -1 0 0 0 -1 0 0 0 -1;-1 0 0 0 -1 0 -1 -1 0 0 -1 -1 0 0 0;0 0 -1 -1 0 -1 0 0 0 -1 0 0 0 -1 -1;-1 -1 0 0 0 0 0 -1 -1 0 0 -1 -1 0 0;0 0 0 0 0 0 0 0 -1 -1 0 0 -1 -1 0;0 0 0 -1 0 -1 0 0 0 -1 0 0 0 0 -1;0 0 0 0 0 -1 -1 0 0 0 -1 0 0 0 -1;0 0 0 0 0 0 -1 -1 0 0 -1 -1
21、0 0 0;-1 0 0 0 -1 -1 0 0 0 -1 0 0 0 0 0 ;0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 0;0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0;0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0;0 0 0 0 0 -1 0 0 0 -1 0 0 0 0 0;-1 -1 0 0 0 -1 -1 0 0 0 0 0 0 0 0;0 -1 -1 0 0 0 -1 -1 0 0 0 0 0 0 0;-1 -1 0 0 0 0 0 0 0 0 0 -1 -1 0 0;0 -1 -1 0 0 0 0 0 0 0 0 0 -1
22、-1 0;0 0 -1 -1 0 0 0 0 0 0 0 0 0 -1 -1;0 0 -1 -1 0 0 0 -1 -1 0 0 0 0 0 0;0 0 0 -1 -1 0 0 0 -1 -1 0 0 0 0 0;0 0 0 0 0 0 0 -1 0 0 0 -1 0 0 0;0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0;0 0 0 0 -1 0 0 0 0 0 -1 0 0 0 0;0 0 -1 0 0 0 0 0 0 0 0 0 0 -1 0;0 -1 0 0 0 0 0 0 -1 0 0 0 -1 0 0;0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0;0
23、0 0 0 -1 0 0 0 0 -1 0 0 0 0 0;0 0 0 -1 0 0 0 0 0 0 0 0 0 0 -1;0 0 0 0 0 0 -1 0 0 0 -1 0 0 0 0b=-18;-20;-20;-19;-20;-17;-20;-19;-17;-12;-12;-18;-20;-19;-17;-18;-20;-20;-19;-17;-19;-17;-12;-12;-12;-12;-12;-12;-12;-12;-12;lb=zeros(15,1);x,fval,exitflag,output,lambda=linprog(f,A,b,lb) A =Columns 1 throu
24、gh 110 0 0 -1 -1 0 0 0 0 0 -1-1 0 0 0 -1 0 0 0 0 0 -10 0 0 -1 -1 -1 -1 0 0 0 -1-1 0 0 0 -1 0 -1 -1 0 0 -10 0 -1 -1 0 -1 0 0 0 -1 0-1 -1 0 0 0 0 0 -1 -1 0 00 0 0 0 0 0 0 0 -1 -1 00 0 0 -1 0 -1 0 0 0 -1 00 0 0 0 0 -1 -1 0 0 0 -10 0 0 0 0 0 -1 -1 0 0 -1-1 0 0 0 -1 -1 0 0 0 -1 00 0 0 0 0 0 -1 -1 0 0 00
25、0 0 0 0 0 0 -1 -1 0 0110 0 0 0 0 0 0 0 -1 -1 00 0 0 0 0 -1 0 0 0 -1 0-1 -1 0 0 0 -1 -1 0 0 0 00 -1 -1 0 0 0 -1 -1 0 0 0-1 -1 0 0 0 0 0 0 0 0 00 -1 -1 0 0 0 0 0 0 0 00 0 -1 -1 0 0 0 0 0 0 00 0 -1 -1 0 0 0 -1 -1 0 00 0 0 -1 -1 0 0 0 -1 -1 00 0 0 0 0 0 0 -1 0 0 00 0 0 0 0 0 -1 0 0 0 00 0 0 0 -1 0 0 0 0
26、 0 -10 0 -1 0 0 0 0 0 0 0 00 -1 0 0 0 0 0 0 -1 0 00 0 0 0 0 -1 0 0 0 0 00 0 0 0 -1 0 0 0 0 -1 00 0 0 -1 0 0 0 0 0 0 00 0 0 0 0 0 -1 0 0 0 -1Columns 12 through 150 0 0 -1-1 0 0 00 0 0 -1-1 0 0 00 0 -1 -1-1 -1 0 00 -1 -1 00 0 0 -10 0 0 -1-1 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 0-1 -1 0
27、 00 -1 -1 0120 0 -1 -10 0 0 00 0 0 0-1 0 0 00 0 0 00 0 0 00 0 -1 00 -1 0 00 0 0 00 0 0 00 0 0 -10 0 0 0Optimization terminated.x =2.25694.37146.16956.55718.578712.000012.00006.000014.00005.00003.42138.57474.79705.83055.4429fval =105.0000exitflag =1output = iterations: 8algorithm: large-scale: interior pointcgiterations: 0message: Optimization terminated.13constrviolation: 6.0396e-014firstorderopt: 2.8233e-014lambda = ineqlin: 31x1 doubleeqlin: 0x1 doubleupper: 15x1 doublelower: 15x1 double