使用线性规划的班次计划

我思故我在

建模和求解线性规划的有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

R解决方案

我使用以下方法解决了上述问题。

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

费利克斯·格罗斯曼

你的错误是在你初始化变量的时候constr,因为你没有将它定义为矩阵。第二个错误是你的矩阵本身。看看我的例子。

我想知道你为什么不坚持书中的例子,因为我想检查我的解决方案。我的就是基于这个。

library(lpSolve)
obj.fun <- c(1,1,1,1,1,1)
constr <- matrix(c(1,0,0,0,0,1,
        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), ncol = 6, byrow = TRUE)
constr.dir <- rep(">=",6)
constr.val <-c (5,7,18,12,15,10)
day.shift <- lp("min",obj.fun,constr,constr.dir,constr.val,compute.sens = TRUE)

day.shift$objval
# [1] 38
day.shift$solution
# [1]  5 11  7  5 10  0

根据您在评论中的问题进行编辑:

这是周期上的班次分布:

shift | 0-4 | 4-8 | 8-12 | 12-16 | 16-20 | 20-24
---------------------------------------------------
20-4  | 5   | 5   |      |       |       |
0-8   |     | 11  | 11   |       |       |
4-12  |     |     | 7    | 7     |       |
8-16  |     |     |      | 5     | 5     |
12-20 |     |     |      |       | 10    | 10
18-24 |     |     |      |       |       |
----------------------------------------------------
sum   | 5   | 16  | 18   | 12    | 15    | 10
----------------------------------------------------
need  | 5   | 7   | 18   | 12    | 15    | 10
---------------------------------------------------

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章