如何在R simmer中定义排队模型的启动状态?

时间:2019-03-01 11:27:14

标签: r simulation modeling queuing operations-research

以下是标准的银行柜台问题来说明我的问题:

  

考虑一个简单的银行,顾客随机到达。顾客   将在两个柜台之一中送达,随机抽出时间   每个服务。另外,假设等待的顾客组成一个   FIFO队列。

这是并发症:

  

假设我们对从   特定的一天而不是一天的开始。都在中午   柜台已被占用,并且已经有4位客户排队。

有没有办法在R慢火中以这种起始状态进行构建?

这是我已经拥有的代码:

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)

1 个答案:

答案 0 :(得分:1)

您可以很容易地设置初始条件:只需添加另一个生成器,即可在t = 0时放置6个到达点。而且,如果您需要进一步自定义他们的服务时间,请为此设置另一个轨迹。