我意识到这里没有很多关于在 R 中使用 Simmer 包进行离散事件模拟的问题,但是我已经浏览了所有的小插曲,找不到执行这个看似简单的任务的答案。
我想模拟 2 位客户以随机的、三角形分布的签到方式到达,到达时间恒定为 10 分钟。这是我使用 simmer 创建的轨迹:
library(simmer)
traj <- trajectory("admin") %>%
seize("check_in") %>%
timeout(function() rtriangle(a=1, b=3, c=2)) %>%
release("check_in")
outpat_clinic <- simmer() %>%
add_generator("customer", traj, function(){c(0,rep(20,5),-1)}) %>%
add_resource("check_in", 1)
这里的“许多客户”子标题:https ://cran.r-project.org/web/packages/simmer/vignettes/D-bank-1.html#more-customers 是我用来获取上述代码的内容。
运行上面的代码并检查到达时间,上面的代码模拟了一个恒定的 20 分钟的到达间隔时间,但不具有 2 个患者在那个时间到达的特性。我不确定如何创建一个函数来反映这一点。
运行模型会给我以下输出:
run(clinic, 100)
get_mon_arrivals(clinic)
name start_time end_time activity_time finished replication
1 customer0 0 1.623746 1.623746 TRUE 1
2 customer1 20 22.336749 2.336749 TRUE 1
3 customer2 40 42.216531 2.216531 TRUE 1
4 customer3 60 62.019354 2.019354 TRUE 1
5 customer4 80 81.995766 1.995766 TRUE 1
对此的任何见解将不胜感激。