Ошибка: в [Seize] -> Timeout -> [Release]: ожидается одно значение: [extension = 11] - PullRequest
1 голос
/ 17 июня 2020

Я использую R simmer для моделирования. Однако я получаю это сообщение об ошибке каждый раз, когда запускаю его:

Ошибка: 'truck0' на 48,73 в [Seize] -> Timeout -> [Release]: Ожидается одно значение: [степень = 11].

Что с этим не так?

Это мой сценарий R:

rm(list=ls())
#load packages
library(simmer)
library(simmer.plot)

#create an simulation environment
env <- simmer("Terminal")
env

#create a truck trajectory
truck <- trajectory("Truck path", verbose = TRUE) 
truck  

#draw model
truck %>%

  seize("frontdesk",1) %>% 
  timeout(function() rnorm(11.27671,3.233562)) %>% 
  release("frontdesk",1) %>%

  seize("gate-in",1) %>% 
  timeout(function() rnorm(17.54509,9.915719)) %>% 
  release("gate-in",1) %>%

  seize("station",1) %>% 
  timeout(function() rnorm(12.68418,12.55247)) %>% 
  release("station",1) %>%

  seize("lashing",1) %>% 
  timeout(function() rnorm(28.87726,21.0809)) %>% 
  release("lashing",1) %>%

  seize("control",1) %>% 
  timeout(function() rnorm(12.70417,3.711475)) %>% 
  release("control",1) %>%

  seize("frontdesk end",1) %>%
  timeout(function()rnorm(11.27671,3.233562)) %>%
  release("frontdesk end",1)

env <- lapply(1:100, function(i) {
  simmer("Terminal") %>%
    add_resource("frontdesk", 2) %>%
    add_resource("gate-in", 2) %>%
    add_resource("station", 1) %>%
    add_resource("lashing", 15) %>%
    add_resource("control", 1) %>%
    add_resource("frontdesk end", 2) %>%
    add_generator(name = "truck" , 
                  trajectory = truck,
                  distribution = function() rnorm(1,24.992,36.015)) %>%
    run(660) %>%
    wrap()
})

1 Ответ

0 голосов
/ 17 июня 2020

Как показывает ошибка, действия по таймауту ожидают одно значение, и в этом случае вы предоставляете 11. Из-за этого:

timeout(function() rnorm(11.27671,3.233562))

rnorm - первый параметр - это количество выборок (которое в данном случае округляется до 11). Что ты здесь делаешь? Если это должно быть mean=11.27, sd=3.23, тогда вам нужно добавить

timeout(function() rnorm(1, 11.27671,3.233562))

, чтобы при необходимости вы получали один образец для каждого вызова. И то же самое относится ко всем другим тайм-аутам.

EDIT: Кроме того, я не рекомендую использовать нормальное распределение для времени обслуживания, потому что нормальное распределение может возвращать отрицательные значения (которые по умолчанию приводятся к положительным), и таким образом вы можете получить неожиданные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...