如何在煨包的轨迹上编写循环
问题描述:
我试图用R的包Simmer模拟一个排队网络。但是,我很难将主循环合并到主轨迹中。一个简单的一个节点队列代码以下:如何在煨包的轨迹上编写循环
to_queue_1 <- trajectory() %>%
for(i in 1:100){
seize("nurse", 1) %>%
timeout(1) %>%
release("nurse", 1)
}
env <- simmer()
add_resource("nurse",1)
env %>%
add_generator("arrival1_", to_queue_1, function() rexp(1, 1),mon=2) %>%
run(200)
乳宁轨迹函数后,它显示我认为“错误在用于(在我。)1:100:传递给4个参数‘的’这需要3” 。
实际的网络更加复杂,这需要一个环路,其中不同的节点进行通信。例如,我希望节点1流向节点2和3.节点2流向节点1和3.节点3流向节点1和2.唯一可能的出口是节点3.
在此先感谢。
答
的rollback
活动服务于这一目的:
library(simmer)
to_queue_1 <- trajectory() %>%
seize("nurse", 1) %>%
timeout(1) %>%
release("nurse", 1) %>%
rollback(3, 100)
env <- simmer() %>%
add_resource("nurse",1) %>%
add_generator("arrival1_", to_queue_1, function() rexp(1, 1), mon=2) %>%
run(200)
凡3
是活动的数量来回滚,并100
是重复的次数。
感谢您的回复。然而,是否有可能在rollback()中有功能参数?例如,释放“护士”后,我抓住“医生”并释放“医生”。之后,我可能不想使用回滚(3,100),而是用概率p回滚(1〜3,1),用概率q回滚(4〜6,1),并以概率1-p-q退出。基本上它是一个护士医生串联队列,而医生可以以一定的概率将病人送回护士。 –
'rollback' activity有一个可选的参数'check',它覆盖第二个参数'times'(如果存在),所以每次到达'rollback'时,都会检查它是否应该返回。 如果您需要根据某种概率回退不同数量的活动,则可以使用“分支”并在其中放置多个“回滚”。 –
非常感谢!我会检查! –