R项目|单纯形法|在这种情况下如何指定变量?

时间:2015-09-04 13:59:04

标签: r case simplex case-study

我即将在R项目中学习所有关于单纯形法的方法,不幸的是我在这种情况下崩溃了: 我们正在24小时营业,如果当天有六班(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

但是不行,我知道,但尝试了一切并投降:) 在计算此案例时,我非常感谢!

2 个答案:

答案 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!