## leave with some probability
set.seed(1234)
traj <- trajectory() %>%
log_("leave with some probability") %>%
leave(function() runif(1) < 0.5) %>%
log_("didn't leave")
simmer() %>%
add_generator("dummy", traj, at(0, 1)) %>%
run() %>% invisible
## reneging after some time
bank <- trajectory() %>%
log_("here I am") %>%
# renege in 5 minutes
renege_in(
5,
out = trajectory() %>%
log_("lost my patience. Reneging...")) %>%
seize("clerk") %>%
# stay if I'm being attended within 5 minutes
renege_abort() %>%
log_("I'm being attended") %>%
timeout(10) %>%
release("clerk") %>%
log_("finished")
simmer() %>%
add_resource("clerk", 1) %>%
add_generator("customer", bank, at(0, 1)) %>%
run() %>% invisible
Run the code above in your browser using DataLab