Симмер Get_attribute | нет ошибки при прибытии

Во -первых, это simmer_vignette и эта ссылка advanced_simmer_usage, по- видимому, указывают на то, что ошибка проистекает из того факта, что "get_name, get_attribute и get_prioritization предназначены для использования внутри траектории, в противном случае не будет никакого поступления, и эти функции будут выдавать ошибка "Минимальный работоспособный пример:

  patient_traj <- trajectory(name = "patient_trajectory") %>%
  set_attribute("my_key", 123) %>%
  timeout(5) %>%
  set_attribute("my_key", function() get_attribute(env, "my_key") + 1) %>%
  timeout(5) %>%
  set_attribute("dependent_key", function() ifelse(get_attribute(env, "my_key")<=123, 1, 0)) %>%
  timeout(5) %>%
  set_attribute("independent_key", function() runif(1))

env<- simmer() %>%
  add_generator("patient", patient_traj, at(0), mon = 2)
env %>% run()
#> simmer environment: anonymous | now: 15 | next: 
#> { Generator: patient | monitored: 2 | n_generated: 1 }

get_mon_attributes(env)
#>   time     name             key       value replication
#> 1    0 patient0          my_key 123.0000000           1
#> 2    5 patient0          my_key 124.0000000           1
#> 3   10 patient0   dependent_key   0.0000000           1
#> 4   15 patient0 independent_key   0.9234335           1

Теперь это работает так, как должно работать, проблема начинается, когда я пытаюсь вызвать get_attribute() в любом другом смысле. Добавление этой строки после set_attribute() в самом конце определения траектории:

log_(get_attribute(env, "independent_key"))

выдает вышеупомянутую ошибку. Что я на самом деле хочу сделать, так это вызвать функцию "отпуск" и присвоить ей в качестве вероятности атрибут. Я все еще делаю это в траектории.

leave(prob = get_attribute(env, "independent_key"))

Излишне говорить, что это также выдает ошибку "Ошибка в get_attribute_(private$sim_obj, key, global): нет поступления работающего".
Кто-нибудь знает, что может быть причиной этого? Я чувствую, что единственный вариант - это приведенное выше объяснение "get_attribute предназначен для использования внутри траектории" - но я чувствую, что делаю это.

Уже спасибо!

1 ответ

Решение

Хорошо, я смущен, чтобы сказать это, но проблема была довольно легко решена. Кажется, что проблема была в том, чтобы получить доступ к атрибуту напрямую.
Так log_(get_attribute(env, "independent_key")) не работает, но log_(function() get_attribute(env, "independent_key")) делает.
Это все, что нужно.
Если у кого-то есть объяснение, почему это все, что нужно, я был бы очень признателен.

Другие вопросы по тегам