首页 > 解决方案 > 机器利用率的调度问题

问题描述

我遇到了一个与制造领域相关的独特问题。我的数据如下

df<- read.table(text="LOT   Step    Tool_code   Time_taken  Transfer_time   START_Time  end_time
LOT1    1   Machine 1   3   1   09:00:00    09:04:00
LOT1    2   Machine 2   10  1   09:04:00    09:15:00
LOT1    3   Machine 3   3   1   09:15:00    09:19:00
LOT1    4   Machine 2   10  1   09:19:00    09:30:00
LOT1    5   Machine 4   2   1   09:30:00    09:33:00
LOT1    6   Machine 5   2   1   09:33:00    09:36:00
LOT1    7   Machine 6   1   1   09:36:00    09:38:00
LOT1    8   Machine 7   5   1   09:38:00    09:44:00
LOT1    9   Machine 8   5   1   09:44:00    09:50:00
",header =T)

问题陈述是这些数据包含很多要制造的数据。我想要的是通过将他们的空闲时间分配给其他很多 LOT2 来有效地利用机器。我面临的主要问题是,例如机器 2 的工作在 9:15 完成,所以在 9.15 我将允许该机器在 9:19 在 LOT2 bt 上工作,机器 2 再次需要回到 Lot1。所以在这种情况下,lot1 应该添加由于机器 2 在 LOT2 中工作而发生的延迟。

我尝试过 plan 包、projectman 包。尝试使用 foverlaps 但无法针对这个独特的问题获得任何具体结果。任何与此相关的帮助或软件包将不胜感激

所需的输出将是

lot1 <- structure(list(LOT = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), .Label = "LOT1", class = "factor"), Step = 1:9, Tool_code = structure(c(1L, 
2L, 3L, 2L, 4L, 5L, 6L, 7L, 8L), .Label = c("Machine 1", "Machine 2", 
"Machine 3", "Machine 4", "Machine 5", "Machine 6", "Machine 7", 
"Machine 8"), class = "factor"), Time_taken = c(3L, 10L, 3L, 
10L, 2L, 2L, 1L, 5L, 5L), Transfer_time = c(1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L), START_Time = structure(1:9, .Label = c("09:00:00", 
"09:04:00", "09:15:00", "09:19:00", "09:30:00", "09:33:00", "09:36:00", 
"09:38:00", "09:44:00"), class = "factor"), end_time = structure(1:9, .Label = c("09:04:00", 
"09:15:00", "09:19:00", "09:30:00", "09:33:00", "09:36:00", "09:38:00", 
"09:44:00", "09:50:00"), class = "factor"), desired_start_time = structure(1:9, .Label = c("09:00:00", 
"09:04:00", "09:15:00", "09:26:00", "09:37:00", "09:40:00", "09:43:00", 
"09:45:00", "09:51:00"), class = "factor"), desired_end_time = structure(1:9, .Label = c("09:04:00", 
"09:15:00", "09:19:00", "09:37:00", "09:40:00", "09:43:00", "09:45:00", 
"09:51:00", "09:57:00"), class = "factor"), comment = structure(c(1L, 
1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L), .Label = c("", "Delay because machine was working in LOT2"
), class = "factor")), class = "data.frame", row.names = c(NA, 
-9L))

考虑到机器工作在 LOT1 中完成,Lot 2 的时间安排如下

lot2 <- structure(list(LOT = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), .Label = "LOT2", class = "factor"), Step = 1:9, Tool_code = structure(c(1L, 
2L, 3L, 2L, 4L, 5L, 6L, 7L, 8L), .Label = c("Machine 1", "Machine 2", 
"Machine 3", "Machine 4", "Machine 5", "Machine 6", "Machine 7", 
"Machine 8"), class = "factor"), Time_taken = c(3L, 10L, 3L, 
10L, 2L, 2L, 1L, 5L, 5L), Transfer_time = c(1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L), START_Time = structure(1:9, .Label = c("09:04:00", 
"09:15:00", "09:26:00", "09:37:00", "09:48:00", "09:51:00", "09:54:00", 
"09:56:00", "10:02:00"), class = "factor"), end_time = structure(1:9, .Label = c("09:08:00", 
"09:26:00", "09:30:00", "09:48:00", "09:51:00", "09:54:00", "09:56:00", 
"10:02:00", "10:08:00"), class = "factor")), class = "data.frame", row.names = c(NA, 
-9L))

标签: pythonroptimizationscheduling

解决方案


推荐阅读