3

まず第一に、この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」関数を呼び出して、確率として属性を与えることです。私はまだ軌道でこれを行います。

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

言うまでもなく、これは「get_attribute_(private$sim_obj, key, global) のエラー: 実行中の到着がありません」というエラーもスローします。
誰がこれを引き起こす可能性があるか知っていますか? 唯一のオプションは、上記の説明「get_attribute は軌道内で使用することを意図しています」のように感じますが、これを行っているように感じます。

もうありがとう!

4

1 に答える 1