Я хотел бы закодировать симуляцию, при которой все поступающие Предметы (A, B, C, ...) сначала разбираются на 2 части. Item1 подвергается OPERATION1 напрямую, а Item2 собирается в партии (размер = 4) перед обработкой с OPERATION2. После обработки я хочу, чтобы все части одного и того же элемента были повторно собраны, а не смешаны с частями из других элементов (т. Е. Подчасть 1 из А идет только с подчастью 2 из А).
Я пробовал параллельные задачи для разделениятраектории подчастей, а также попытались собрать все Items.subparts2 в пакете размером 4.
library(simmer)
library(simmer.plot)
library(simmer.bricks)
items <- LETTERS[1:10]
traj <- function(item) {
trajectory() %>%
visit("operator", 10, 1) %>% # disassemble the incoming item
set_global(paste0("subpart1_", item), 1) %>%
set_global(paste0("subpart2_", item), 1) %>%
set_global("CountSubparts2", mod ="+", 1) %>%
do_parallel(
# OPERATION 1
trajectory() %>%
visit("Machine1", 150, 1) %>%
set_global(paste0("subpart1_", item), 0) %>%
set_global(paste0("subpart1_", item, "_processed"), 1)
,
# OPERATION 2
trajectory() %>%
batch(n = 4, timeout = 0, name = "POOL_PARTS") %>%
separate() %>%
visit("Machine2", 200, 1) %>%
set_global(paste0("subpart2_", item, "_processed"), 1) %>%
set_global("CountSubparts2", 0)
, .env = env, wait = TRUE
) %>%
visit("operator", 10, 1) # reassemble the items
}
env <- simmer()
env %>%
add_resource("operator", 1) %>%
add_resource("Machine1", capacity = 1, queue_size = 0, 2) %>%
add_resource("Machine2", capacity = 1, queue_size = 0, 1)
for (i in items) env %>%
add_generator(i, traj(i), at(0), mon = 2)
env %>% run(1000)
ressources <- get_mon_resources(env)
ressources %>% plot(metric = "utilization")
ressources %>% plot(metric = "usage")
attributs <- env %>% get_mon_attributes()
attributs %>% plot(key = "CountSubparts2")
Проблема заключается в следующем: сначала я ожидал, что CountSubparts2 увеличится до 4, а затем уменьшится до 0 после ОПЕРАЦИИ 2Здесь CountSubparts2 продолжает расти. Во-вторых, я не могу найти способ явно сказать Симмеру: «Соберите subpart1_A_processed и subpart2_A_processed. Сделайте то же самое для B, C и т. Д.»
Что мне не хватает?
СпасибоВам за помощь!