使用R 建模和求解线性规划这本书在第 3.7 节中有一个关于计划班次的很好的例子。我无法用 R 解决它。另外,我不清楚书中提供的解决方案。
问题
一家公司有一个急救中心,每天 24 小时工作。下表详细列出了一天中划分为四小时六班的员工的最低需求。
Shift Employees
00:00 - 04:00 5
04:00 - 08:00 7
08:00 - 12:00 18
12:00 - 16:00 12
16:00 - 20:00 15
20:00 - 00:00 10
解决方案
我使用以下方法解决了上述问题。
library(lpSolve)
obj.fun <- c(1,1,1,1,1,1)
constr <- c(1,1,0,0,0,0,
0,1,1,0,0,0,
0,0,1,1,0,0,
0,0,0,1,1,0,
0,0,0,0,1,1,
1,0,0,0,0,1)
constr.dir <- rep(">=",6)
constr.val <-c (12,25,30,27,25,15)
day.shift <- lp("min",obj.fun,constr,constr.dir,constr.val,compute.sens = TRUE)
而且,我得到以下结果。
> day.shift$objval
[1] 1.666667
> day.shift$solution
[1] 0.000000 1.666667 0.000000 0.000000 0.000000 0.000000
这与书中提到的数值解相去甚远。
数值解
根据数值解所需的解的总数是38
. 但是,既然问题表明,每个时期都有一个确定的最低员工人数,那么这个解决方案怎么能有效呢?
s1 5
s2 6
s3 12
s4 0
s5 15
s6 0