如何创建分支Simmer

yfwxisqw  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(89)

我正在模拟乘客到达机场,在那里他们必须通过具有均匀分布(runif(1,1,3))(以秒为单位)的验证机。
然后,他们必须通过X射线机,在那里我们使用两个三角形分布,一个用于准备时间,另一个用于扫描时间(都以秒为单位)(rtri(1,min = 5,max = 15,mode = 10和rtri(1,min = 5,max = 30,mode = 10))。
乘客到达符合泊松分布,平均每小时有2965名乘客到达。
验证机3台,X光机22台
但是也有VIP乘客,对应于其他乘客的20%,并且根据泊松分布lambda = 0.125秒到达。他们也有4台X光机。准备时间和扫描时间是相同的
我很确定我必须使用分支但我不知道如何我的代码到目前为止:

library(triangulr)
library(simmer)
rm(list = ls())
env <- simmer("Security control")
env
passageiro <- trajectory("passageiro' path" ) %>%
    
  seize("MV") %>%
  timeout(function() runif(1,1,3)) %>%
  release("MV", 1) %>%
    
  seize("MC") %>%
  timeout(function() rtri(1, min = 5, max = 15, mode = 10)) %>%
  timeout(function() rtri(1, min = 5, max = 30, mode = 10)) %>%
  release("MC")
    

env %>%
  add_resource("VM", 3) %>%
  add_resource("CM", 22) %>%
  add_generator("passageiro", passageiro, function() rpois(1,lambda = 2965/3600))

env %>%
  run(until = 10800)

MC -控制机VM -验证机

t2a7ltrp

t2a7ltrp1#

如果您有一个单一的到达流程,那么您可以使用branch将VIP与其他乘客分开(20-80分割):

passageiro <- trajectory("passageiro' path" ) %>%
  ... %>%
  branch(
    function() (runif(1) < 0.2) + 1, continue=c(TRUE, TRUE),
    trajectory() %>%
      ... # normal path,
    trajectory() %>%
      ... # vip path
  ) %>%
  ...

但是如果你有两个独立的发生器,一个是给普通乘客的,一个是给VIP乘客的,那么我只需要为他们定义不同的轨迹,就这样,这就简单多了。

相关问题