python - 机器利用率的调度问题
问题描述
我遇到了一个与制造领域相关的独特问题。我的数据如下
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))
解决方案
推荐阅读
- azure-service-fabric - Service Fabric:将枚举类移动到不同的项目
- css - 如何在反应中正确定位超过 100% 的宽度
- javascript - onclick 弹出 div,但一次只有 1 个有效
- javascript - Angular trackBy不更新dom
- python - 与非“https://”模式不兼容的请求
- selenium - 如何使 selenium 在具有 GUI 功能的 Linux 服务器上托管的詹金斯机器上运行?
- python - 我正在使用 Kivy 开发一个 Android 应用程序,我想知道如何在 Scrollview 中添加 MDCard?目前我正在使用 kivyMD 和 Kivy
- android - Android 许可证状态未知。尝试重新安装或更新您的 Android SDK 管理器。未找到 Android sdkmanager 工具
- python - 使用 spaCy 加载英文模块时出错
- python - 在 python 中,我们如何从每条推文 Twitter API 中提取回复?