Как определить начальное состояние модели массового обслуживания в r simmer? - PullRequest
0 голосов
/ 01 марта 2019

Вот стандартная проблема банковского счетчика, чтобы проиллюстрировать мой вопрос:

Рассмотрим простой банк с случайным числом клиентов.Клиенты должны обслуживаться на одном из двух прилавков, выбирая случайное время для обслуживания на каждом.Также предположим, что ожидающие клиенты формируют одну очередь 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)

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете установить начальные условия довольно легко: просто добавьте еще один генератор, чтобы поставить 6 поступлений при t = 0.И если вам нужно дополнительно настроить время их обслуживания, установите для этого другую траекторию.

...