Имитация очереди R: Нахождение функции с двумя аргументами процесса и состояния, которое возвращает количество времени, проведенного в этом состоянии. - PullRequest
1 голос
/ 14 мая 2019

У меня есть код для симулированного процесса рождения / смерти.И хотел бы найти функцию, которая принимает симулированный процесс и состояние этого процесса и возвращает количество времени, которое процесс провел в этом состоянии.

Я думаю, что могу каким-то образом использовать части кода, которые у меня уже есть, как вектор «время» в коде.Но я не вижу этого.Например, я хотел бы найти функцию time_in_state <- function (s, process).Где процесс может быть, например, process1 <- bd_process (2, 10, 0, 100) и состояние s = 2.Тогда функция должна вернуть количество времени, которое процесс1 провел в состоянии 2. </p>

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)
}

...