如何在此单纯形法案例中指定变量?

How to specify variables in this simplex method case?

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

我们是 运行 一家 24 小时营业的商店,我们需要知道如果白天有六个轮班(8-12、12-16 等)和一名员工,我们需要多少员工最多可以工作8小时。一班员工人数上限为:

我试过这个:

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

但是没用。

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

由于您示例中的系数向量 a 的维度为 6,因此 objective 函数中的向量 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

好的,我在 4 天后得到它 :)) 如果其他人有同样的问题,我 post 结果在这里。这里的主要困难是计算 "people" 为 "number of hours at one shift"

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)

Objective 函数系数的最大化问题

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

最优解具有以下值

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

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