Good afternoon. I'm doing a project in college and I need help in optimizing the code.
Case: passenger arrivals at the airport
Conditions: a) 2 types of passengers (normal & business); b) 4 time periods with 4 different arrival distributions; b) 8 service times (normal customers 80% arrivals and 20% business).
I already have a solution with 4 generators for each of the slots, I need some guidance to optimize the code. Thanks.
The code:
This part is repeated 4 times (1 for each slot)
# divisões de trajetorias de passageiros das 6h às 7 h
# trajetoria para os balcões dos passageiros normais
# divisões de trajetorias de passageiros das 6h às 7 h
# trajetoria para os balcões dos passageiros normais
branch_normal_6_7 <- trajectory("Posto controlo normal das 6h as 7h") %>%
log_("Passageiro dirige-se ao balcao") %>%
timeout(task = dist_passag_6_7_n) %>%
set_attribute("balcao normal", 1) %>%
select(paste0("balcao", 1:12),policy = "shortest-queue-available") %>%
seize_selected() %>%
log_("Passageiro a ser atendido") %>%
log_("Inicio tempo preparacao") %>%
timeout(task = dist_tmp_prep) %>%
log_("Fim tempo preparação") %>%
log_("Inicio tempo scanning") %>%
timeout(task = dist_tmp_scan) %>%
log_("Fim tempo scanning") %>%
release_selected() %>%
log_("Sair do posto de controlo comum") %>%
branch(
option = dist_passag_controlo_adic, continue = c(TRUE, TRUE),
trajectory() %>%
log_("Passageiro selecionado para controlo adicional") %>%
set_attribute("Controlo adicional normal", 1) %>%
timeout(15) %>%
log_("Passageiro saiu da área de segurança"),
trajectory() %>%
log_("Passageiro saiu da área de segurança") %>%
set_attribute("Controlo adicional normal", 0))
# trajetoria para os balcões dos passageiros via verde
branch_via_verde_6_7 <- trajectory("Posto controlo via verde das 6h as 7h") %>%
log_("Passageiro dirige-se ao balcao") %>%
timeout(task = dist_passag_6_7_vv) %>%
set_attribute("balcao via verde", 2) %>%
select(paste0("balcao_vv", 1:2),policy = "shortest-queue-available") %>%
seize_selected() %>%
log_("Passageiro a ser atendido") %>%
log_("Inicio tempo preparacao") %>%
timeout(task = dist_tmp_prep) %>%
log_("Fim tempo preparação") %>%
log_("Inicio tempo scanning") %>%
timeout(task = dist_tmp_scan) %>%
log_("Fim tempo scanning") %>%
release_selected() %>%
log_("Sair do posto de controlo comum") %>%
branch(
option = dist_passag_controlo_adic, continue = c(F, F),
trajectory() %>%
log_("Passageiro selecionado para controlo adicional") %>%
set_attribute("Controlo adicional via verde", 1) %>%
timeout(15) %>%
log_("Passageiro saiu da área de segurança"),
trajectory() %>%
log_("Passageiro saiu da área de segurança") %>%
set_attribute("Controlo adicional via verde", 0))
# Trajeto dos passageiros das 6h à 7h
passageiros_6_7 <- trajectory("Percurso dos passageiros das 6h as 7h") %>%
log_("Validar cartao embarque [inicio]") %>%
set_attribute("valida cartao embarque", 1) %>%
seize(resource = "MQVCE") %>%
timeout(task = dist_tmp_vce) %>%
release(resource = "MQVCE", amount = 1) %>%
log_("Valida cartao embarque [fim]") %>%
log_("Passageiro [Normal] - [Via verde]?") %>%
branch(
option = dist_passag_norm_vv, continue = TRUE,
branch_normal_6_7,
branch_via_verde_6_7)
# Generators (only 2 of 4)
# geradores das chegadas de passageiros ao aeroporto
env_Airport %>%
add_generator("Passageiro[5-6]: ",
trajectory = passageiros_5_6,
from_to(start_time = conv_hora_min(5),
stop_time = conv_hora_min(6),
dist = dist_passag_5_6),
mon = 2) %>%
add_generator("Passageiro[6-7]: ",
trajectory = passageiros_6_7,
from_to(start_time = conv_hora_min(6),
stop_time = conv_hora_min(7),
dist = dist_passag_6_7),
mon = 2)