我即将在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
但是不行,我知道,但尝试了一切并投降:) 在计算此案例时,我非常感谢!
答案 0 :(得分: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
答案 1 :(得分: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)
线性规划结果
调用:simplex(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。 关闭,删除主题或留给其他人。感谢管理员编辑和@WhiteViking!