Hi, I want to call a function for different resources (locations). I can create each time a trajectory by calling the fucntion as in the example below. is there an easier, automatic way to do it? is it possible to call the trajectory once, and fill it when activated first with "location1", the second time with "location2",... because I need this for many locations. Additionally, for each location a different duration should be provided.
library(simmer)
start <- trajectory() %>%
log_("start")%>%
activate("activity1_1")
activity <- function (name, location, activate_next, duration) {
name<-trajectory("name")%>%
seize("resource", 1) %>%
seize(location, 1) %>%
timeout ( duration ) %>%
log_("done") %>%
release(location, 1) %>%
release("resource",1) %>%
activate (activate_next)
}
activity2 <- function (name, location, activate_next, duration) {
name<-trajectory("name")%>%
seize("resource2", 1) %>%
seize(location, 1) %>%
timeout (duration) %>%
log_("done") %>%
release(location, 1) %>%
release("resource2",1) %>%
activate (activate_next)
}
finish <- trajectory() %>%
log_("finish")
activity1_1 <- activity ("activity1_1", "location1", "activity2_1", 20)
activity2_1 <- activity2 ("activity2_1", "location1", "activity1_2",10)
activity1_2 <- activity ("activity1_2", "location2","activity2_2", 10)
activity2_2 <- activity2 ("activity2_2", "location2", "finish",5)
env <- simmer() %>%
add_generator("start", start, at (0)) %>%
add_generator("activity1_1", activity1_1, when_activated()) %>%
add_generator("activity2_1", activity2_1, when_activated()) %>%
add_generator("activity1_2", activity1_2, when_activated()) %>%
add_generator("activity2_2", activity2_2, when_activated()) %>%
add_generator("finish", finish, when_activated()) %>%
add_resource("resource", 1) %>%
add_resource("resource2", 1) %>%
add_resource("location1", 1) %>%
add_resource("location2", 1)
run(env) %>%
get_mon_arrivals()