-
|
I have the following code in which some patients will need to see the nurse (which is determined by "nurse_lgl" column in df). However, I get the Error: "there is no arrival running" set.seed(100)
patient <- trajectory() %>%
seize("room", 1) %>%
branch( function() {get_attribute(env, "nurse_lgl")}, continue = c(TRUE),
trajectory() %>%
seize("nurse", 1) %>%
timeout_from_attribute("nursee") %>%
release("nurse", 1)
) %>%
seize("doctor", 1) %>%
timeout_from_attribute("doctor") %>%
release("doctor", 1) %>%
release("room", 1)
n <- 5 # number of patients
df <- data.frame(
time = rexp(n, 1/10),
nursee = rgamma(n, 2, 2),
doctor = rgamma(n, 5, 3),
nurse_lgl = sample(c(TRUE,FALSE),n, replace = T)
) %>% mutate(time = cumsum(time))
env <- simmer() %>%
add_resource("room", 10) %>%
add_resource("nurse", 1) %>%
add_resource("doctor", 1) %>%
add_dataframe("patient", patient, df, time=c("absolute")) %>%
run()Thank you so much for your time and help in advance. |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 2 replies
-
|
If you are using the library(simmer)
set.seed(100)
env <- simmer()
patient <- trajectory() %>%
seize("room", 1) %>%
branch( function() {get_attribute(env, "nurse_lgl")}, continue = c(TRUE),
trajectory() %>%
seize("nurse", 1) %>%
timeout_from_attribute("nursee") %>%
release("nurse", 1)
) %>%
seize("doctor", 1) %>%
timeout_from_attribute("doctor") %>%
release("doctor", 1) %>%
release("room", 1)
n <- 5 # number of patients
df <- data.frame(
time = cumsum(rexp(n, 1/10)),
nursee = rgamma(n, 2, 2),
doctor = rgamma(n, 5, 3),
nurse_lgl = sample(c(TRUE,FALSE),n, replace = T)
)
env %>%
add_resource("room", 10) %>%
add_resource("nurse", 1) %>%
add_resource("doctor", 1) %>%
add_dataframe("patient", patient, df, time=c("absolute")) %>%
run() |
Beta Was this translation helpful? Give feedback.
-
|
I see now. |
Beta Was this translation helpful? Give feedback.
-
|
I really appreciate it if you could also help me with one more question about get_attribute. In my simulation using now(env) I want to track events for each patient. But I can't used get_attribute for that purpose. Here is my code: library(simmer)
set.seed(100)
env <- simmer()
patient <- trajectory() %>%
seize("room", 1) %>%
branch( function() {get_attribute(env, "nurse_lgl")}, continue = c(TRUE),
trajectory() %>%
seize("nurse", 1) %>%
timeout_from_attribute("nursee") %>%
release("nurse", 1)
) %>%
seize("doctor", 1) %>%
set_attribute(paste0("patient_Meet_Doctor_start_",function() {get_attribute(env, "type_of_visit")}), function() {now(env)}) %>%
timeout_from_attribute("doctor") %>%
set_attribute(paste0("patient_Meet_Doctor_end_",function() {get_attribute(env, "type_of_visit")}), function() {now(env)}) %>%
release("doctor", 1) %>%
release("room", 1)
n <- 5 # number of patients
df <- data.frame(
type_of_visit = c("A", "B", "B", "B", "A"),
time = cumsum(rexp(n, 1/10)),
nursee = rgamma(n, 2, 2),
doctor = rgamma(n, 5, 3),
nurse_lgl = sample(c(TRUE,FALSE),n, replace = T)
)
env %>%
add_resource("room", 10) %>%
add_resource("nurse", 1) %>%
add_resource("doctor", 1) %>%
add_dataframe("patient", patient, df, time=c("absolute")) %>%
run()Thank you so much in advance. |
Beta Was this translation helpful? Give feedback.
If you are using the
envin a trajectory, it is a good practice to define it in the first place to avoid referencing a non-existing object, or worse, a previous simulation (see this section of the vignettes). For example: