首页 > 解决方案 > R队列模拟:找到一个带有两个参数的函数进程和一个状态,它返回在该状态下花费的时间量

问题描述

我有一个模拟出生/死亡过程的代码。并希望找到一个函数,该函数采用模拟过程和该过程的状态并返回该过程在该状态下花费的时间量。

我想我可以以某种方式使用我已经拥有的部分代码,比如代码中的向量“时间”。但我看不到它。例如,我想找到一个函数 time_in_state <- function(s,process)。例如,进程可以是 process1 <- bd_process(2, 10, 0, 100) 并且状态 s=2。然后该函数应该返回 process1 在状态 2 中花费的时间。

bd_process <- function(lambda, mu, initial_state = 0, steps = 500) {

  time_now <- 0
  state_now <- initial_state


  time <- 0
  state <- initial_state

  for (i in 1:steps) { 

    if (state_now == 3) {
        lambda_now <- 0
        } else {
          lambda_now <- lambda
        }

    if (state_now == 0) {
        mu_now <- 0
        } else {
          mu_now <- mu
    }


  if (((mu_now + lambda_now )* runif(1)) < mu_now) {    
          state_now <- state_now - 1                        

     } else {
          state_now <- state_now + 1                    
            }
      time_now <- time_now + time_to_transition  

      time <- c(time, time_now)                 


      state <- c(state, state_now)                                                                            

  }


  list(tid = time, state = state, steps=steps)
}

标签: simulationstochastic-process

解决方案


推荐阅读