R и Simmer вставляют данные в переменную

Dor Aharoni спросил: 28 апреля 2018 в 08:59 в: r

Я пытаюсь сохранить get_mon_resources в переменной данных.

library(simmer) SystemTime <- 200
delay= c(20,40,60,80,100,120,140,160,180,200)/60
set.seed(1234)elevators <-lapply(1:100, function(i) {
  elevator <- simmer("elevator")  worker <-
    trajectory("elevator service") %>% #trajectory name
    log_("new worker arrived") %>% #
    set_attribute("start_time", function() {now(elevator)}) %>%
    seize("elevator",amount = 1) %>% #elevator queue and service 
    timeout(function() sample(delay,1)) %>%
    log_(function() {paste("Waited: ", now(elevator) - get_attribute(elevator, "start_time"))}) %>%
    release("elevator")   elevator %>%
    add_generator("worker", worker, function() rexp(1, 2)) %>% 
    add_resource("elevator", capacity = 2) %>% 
    run(until = SystemTime)
    mydata <- get_mon_resources(elevator)
})

, но не работает

4 ответа

Есть решение
Jaishree Rout ответил: 28 апреля 2018 в 09:53

Вы не указали переменную mydata как глобальную переменную из-за того, что вы не можете получить доступ к переменной outside.Replace mydata <- get_mon_resources(elevator) с приведенным ниже кодом

mydata <<- get_mon_resources(elevator)
Dor Aharoni ответил: 28 апреля 2018 в 11:16
работает !!!!! :)))))) благодарю вас !!!!!
Dor Aharoni ответил: 28 апреля 2018 в 02:19
Как я могу вставить данные из атрибута, например: "times < <-get_attribute (лифт," start_time ")"
Jaishree Rout ответил: 28 апреля 2018 в 04:01
где вы хотите вставить?
Dor Aharoni ответил: 28 апреля 2018 в 06:51
после"set_attribute (" start_time", function () {now (лифт)})% >%"
Jaishree Rout ответил: 28 апреля 2018 в 04:55
вы можете вставить некоторый образец вывода для "get_attribute (лифт," start_time ")".
Dor Aharoni ответил: 29 апреля 2018 в 06:33
library(simmer) SystemTime <- 200
delay= c(20,40,60,80,100,120,140,160,180,200)/60
Start_times <<-data.frame(row.names=TRUE)set.seed(1234)elevators <-lapply(1:10, function(i) {
  elevator <- simmer("elevator")  worker <-
    trajectory("elevator service") %>% #trajectory name
    log_("new worker arrived") %>% #
    set_attribute("start_time", function() {now(elevator)}) %>%
    seize("elevator",amount = 1) %>% #elevator queue and service 
    timeout(function() sample(delay,1)) %>%
    Start_times<<-rbind(get_attribute(elevator, "start_time"),Start_times)%>%
    log_(function() {paste("Waited: ", now(elevator) - get_attribute(elevator, "start_time"))}) %>%
    release("elevator")   elevator %>%
    add_generator("worker", worker, function() rexp(1, 2)) %>% 
    add_resource("elevator", capacity = 2) %>% 
    run(until = SystemTime)})
Jaishree Rout ответил: 29 апреля 2018 в 07:48
ваш выход будет таким, как это {траектория: анонимный, 3 действия {Activity: SetAttribute | keys: [weight], values: [80], global: 0, mod: N} {Activity: SetAttribute | keys: [weight], values: function (), global: 0, mod: N} {Activity: Log | сообщение}}
Iñaki Úcar ответил: 29 апреля 2018 в 07:27

Методы get_mon_*() отлично работают для списков симуляций:

library(simmer)SystemTime <- 200
delay= c(20,40,60,80,100,120,140,160,180,200)/60
set.seed(1234)elevators <-lapply(1:100, function(i) {
  elevator <- simmer("elevator")  worker <-
    trajectory("elevator service") %>% #trajectory name
    #log_("new worker arrived") %>% #
    set_attribute("start_time", function() {now(elevator)}) %>%
    seize("elevator",amount = 1) %>% #elevator queue and service 
    timeout(function() sample(delay,1)) %>%
    #log_(function() {paste("Waited: ", now(elevator) - get_attribute(elevator, "start_time"))}) %>%
    release("elevator")   elevator %>%
    add_generator("worker", worker, function() rexp(1, 2)) %>% 
    add_resource("elevator", capacity = 2) %>% 
    run(until = SystemTime)
})mydata <- get_mon_resources(elevators)
head(mydata)
#>   resource     time server queue capacity queue_size system limit replication
#> 1 elevator 1.250879      1     0        2        Inf      1   Inf           1
#> 2 elevator 1.254170      2     0        2        Inf      2   Inf           1
#> 3 elevator 1.420254      2     1        2        Inf      3   Inf           1
#> 4 elevator 1.434505      2     2        2        Inf      4   Inf           1
#> 5 elevator 1.628096      2     3        2        Inf      5   Inf           1
#> 6 elevator 1.673071      2     4        2        Inf      6   Inf           1
Dor Aharoni ответил: 29 апреля 2018 в 07:40
спасибо, но в этом методе значение поля репликации равно 1, как я могу увеличить значение репликации для каждой репликации?
Dor Aharoni ответил: 29 апреля 2018 в 08:11
Команда get_mon_resources (лифты) подходит для меня, у меня есть одна проблема: поле "replication" каждый раз равно 1, есть ли способ увеличить это значение как lapply (1: 100, function (i))?
Iñaki Úcar ответил: 30 апреля 2018 в 08:37
Это не. Запустите пример и проверьте весь набор данных.
AustinWBryan Dor Aharoni ответил: 29 апреля 2018 в 12:04

Как я могу увеличить это значение с помощью lapply(1:10, function(i)?