0

我即将学习 R 项目中的单纯形法,不幸的是我在这种情况下崩溃了:

我们正在经营一家 24 小时营业的商店,如果白天有 6 个班次(8-12,12-16 等),我们需要知道需要多少员工,而一名员工最多可以工作 8 小时。一班员工的限制是:

  • 0:00-4:00 < 5 4:00-8:00 < 7 8:00-12:00< 15 12:00-16:00 <10 16:00-20:00 <15 20:00-24 :00 <9

我试过这个:

library(boot)
a=c(1,1,1,1,1,1)
w1=c(1,1)
w2=c(1,1)
w3=c(1,1)
w4=c(1,1)
w5=c(1,1)
w6=c(1,1)
A1=rbind(w1,w2,w3,w4,w5,w6)
b1=c(5,7,15,10,15,9)
simplex(a=a,A1=A1,b1=b1,maxi=TRUE)

Error in`[<-`(`*tmp*`, , basic, value = iden(M)) : 
   index is out of borders

但它不起作用。

4

2 回答 2

0

好的,我在 4 天后得到它 :)) 如果其他人有同样的问题,我会在这里发布结果。这里的主要困难是将“人”计算为“一班的小时数”

a=c(1,1,1,1,1,1)
> w1=c(4,0,0,0,0,4)
> w2=c(4,4,0,0,0,0)
> w3=c(0,4,4,0,0,0)
> w4=c(0,0,4,4,0,0)
> w5=c(0,0,0,4,4,0)
> w6=c(0,0,0,0,4,4)
> b1=c(20,28,60,40,60,36)
> library(boot)
> simplex(a=a,A1=rbind(w1,w2,w3,w4,w5,w6)
+ ,b1=b1,maxi=T)

线性规划结果

调用:单纯形(a = a,A1 = rbind(w1,w2,w3,w4,w5,w6),b1 = b1,maxi = T)

目标函数系数的最大化问题

x1 x2 x3 x4 x5 x6 
 1  1  1  1  1  1 

最优解具有以下值

x1 x2 x3 x4 x5 x6 
 5  2 10  0  9  0 

目标函数的最优值为26。CLOSED,删除主题或留给他人。感谢管理员编辑和@WhiteViking!

于 2015-09-06T15:25:17.157 回答
0

发生错误是因为输入矩阵和向量的维度不正确。

由于您的示例中的系数向量 a 具有 6 维,因此目标函数中的向量 x 也必须具有 6 维。并且由于提供给 simplex() 的 b1 也具有 6 维,因此约束中的 A1

A1 * x <= b1

必须是 6 x 6 矩阵。但是,您的示例中的 A 只是一个 6 x 2 矩阵。这会触发错误消息。(如果 simplex() 先检查其输入并发出更用户友好的消息会更好......)

这是一个具有正确尺寸的示例,它确实有效:

library(boot)
a = rep(1, 6)                        # vector with 6 ones
A1 = matrix(1, nrow=6, ncol=6)       # 6x6 matrix with all ones
b1 = c(5, 7, 15, 10, 15, 9)
simplex(a=a, A1=A1, b1=b1, maxi=TRUE)

请注意,这个更正的示例并未尝试实际解决您的特定单纯形问题,它仅说明了 simplex() 的正确用法。

一般来说,值得仔细检查 simplex() 的输入的输入维度。它们在帮助页面中得到了很好的解释:

?simplex
于 2015-09-04T17:26:48.880 回答