Otimize code in simulation

14 views
Skip to first unread message

Nelson Jesus

unread,
Nov 12, 2022, 1:24:50 PM11/12/22
to simmer-devel
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)


Iñaki Ucar

unread,
Nov 18, 2022, 2:32:43 PM11/18/22
to simmer...@googlegroups.com
Hi,

On Sat, 12 Nov 2022 at 19:24, Nelson Jesus <nelson.car...@gmail.com> wrote:
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.

Could please elaborate what you mean by this? Is there any issue with the simulation? Or if you mean that you want to optimize the parameters, then you may want to try simmer.optim: https://github.com/r-simmer/simmer.optim

Iñaki
 
--
You received this message because you are subscribed to the Google Groups "simmer-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to simmer-devel...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/simmer-devel/6484d4f6-f110-44ab-a0da-53da93f606d7n%40googlegroups.com.


--
Iñaki Úcar
Reply all
Reply to author
Forward
0 new messages