这是解决我的问题的标准银行柜台问题:
考虑一个客户随机到达的简单银行。客户将在两个柜台中的一个柜台服务,每个柜台随机服务。此外,假设等待客户形成单个FIFO队列。
这是复杂的问题:
假设我们有兴趣在特定日期的中午开始而不是在当天开始时对该系统进行建模。中午,两个柜台都被占用,已经有4个客户的队列。
有没有办法在R simmer中建立起始状态?
这是我已有的代码:
library(simmer)
set.seed(1234)
customer <-
trajectory("Customer's path") %>%
log_("Here I am") %>%
set_attribute("start_time", function() {now(bank)}) %>%
seize("counter") %>%
log_(function() {paste("Waited: ", now(bank) - get_attribute(bank, "start_time"))}) %>%
timeout(function() {rexp(1, 1/12)}) %>%
release("counter") %>%
log_(function() {paste("Finished: ", now(bank))})
bank <-
simmer("bank") %>%
add_resource("counter", 2) %>%
add_generator("Customer", customer, function() sample(1:15,1))
bank %>% run(until = 300)
您可以非常轻松地设置初始条件:只需添加另一个生成器即可在t = 0时放置6个到达。如果您需要进一步定制其服务时间,请为此目的设置另一个轨迹。