考虑一个矩阵 M(i, j),它描述了机器 i 完成作业 j 的总时间和一个作业序列 S 这是作业的执行顺序。例如:
像这样:
在这种情况下,S = j1, j2, j3
的总时间为 13。我使用以下代码获取此值:
M = matrix(c(4, 2, 2, 5, 3, 2), ncol = 3)
total = 0
for (i in 2:nrow(M))
total = total + sum( pmax(M[i, ], M[i - 1, ]) )
print(total)
它输出 12,应该是 13。此外,我不确定如何将 S
合并到此。
关于如何获得正确值(value)的任何想法?谢谢!
最佳答案
我认为这可以满足您的需求:
M <- matrix(c(4, 2, 2, 5, 3, 2), ncol = 3)
M2 <- cbind(M, matrix(0, nrow=nrow(M), ncol=nrow(M) - 1))
vec <- seq(len=ncol(M2))
M2.ord <- M2
for(i in 1:nrow(M2)) {
M2.ord[i, ] <- vec
vec <- c(tail(vec, 1), head(vec, -1)) + ncol(M2)
}
M2.shift <- matrix(t(M2)[M2.ord], nrow=nrow(M2))
sum(do.call(pmax, split(M2.shift, row(M2.shift))))
烦人的步骤是创建 M2.shift:
[,1] [,2] [,3] [,4]
[1,] 4 2 3 0
[2,] 0 2 5 2
从那时起,这几乎就是您使用的逻辑。请注意,这假设我们使用 M 中定义的所有步骤。
关于r - 排列流水车间总时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864764/