r - 排列流水车间总时间

标签 r algorithm permutation job-scheduling

考虑一个矩阵 M(i, j),它描述了机器 i 完成作业 j 的总时间和一个作业序列 S 这是作业的执行顺序。例如:

像这样: enter image description here

在这种情况下,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/

相关文章:

r - 时间序列数据的多个 x 轴标签

java - 在 Java 中处理巨大的文本文件

algorithm - CPLEX 提供具有不同目标值的不同最佳解决方案

r - 查找给定最大值的表的行名称

r - 在ggplotly线图中填充背景间隔

r - 并行化不工作 sparkR

python - 计算两个列表增量的快速算法

sql - sql组合

python - 列表列表的所有可能组合

javascript - 如何在 javascript 中将集合的元素分组为不相交的子集?