出生死亡密码
Birth Death Code
我的问题:
在实验数学研究所,有一台计算机可以帮助解决问题。
问题以每小时 "Landa" 的强度 "Landa" 泊松过程到达计算机。
解决每个问题的时间可以看作参数为 "mu" 的指数分布。
在我们的世界中,我们有四种不同的状态。 S = (0,1,2,3)
状态 0 = 0 问题已到达计算机
状态 1 = 计算机正在解决 1 个问题
状态 2 = 计算机正在解决 1 个问题 + 队列中的 1 个问题。
状态 3 = 计算机正在解决 1 个问题 + 队列中的 2 个问题。
如果我们处于状态 3 时出现问题,发件人会收到错误消息并稍后重试。该机构已决定最多 5% 的发件人应该收到此错误消息。
为了决定谁有权访问计算机,我们提出了 3 种不同的建议。
- 只允许教授发题(Landa = 2, Mu = 10)
- 请教授和学生提问(Landa = 6, Mu = 10)
- 大家可以提问(Landa =10, Mu = 10)
我们应该调查这 3 个提案中有哪些提案没有超过 5% 的时间填满计算机。
我有两件事需要帮助
第一件事:
为了解决这个问题,我得到了这种代码结构(下面的代码)。我需要帮助的是,如果有人可以向我简要解释以下代码段落的目的,我在其中写了“#?”。
所以我真正需要帮助的是解释部分代码。
第二件事:
在我写了“...”的两个地方,我需要帮助来填写一些代码。
bd_process <- function(lambda, mu, initial_state = 0, steps = 100) {
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
}
#?
time_to_transition <- ...
#?
if (...) {
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) #WHAT DOE THIS VECTOR CONSIST OF?
}
list(time = time, state = state)
}
编写代码时似乎隐含假设到达间隔和服务分布是无记忆的,即指数分布或几何分布。如果没有无记忆,通过将速率设置为零来关闭处理是无效的。
有了无记忆的属性,你可以把time_to_transition
算作superposition of the two Poisson processes, and determine whether it was an arrival or a departure by randomizing proportional to the ratio of one of the rates to the combined rate。将其中一个速率归零也是有效的,因为当你取消归零时,由于无记忆 属性.
,速率为零的经过时间无关紧要
我的问题:
在实验数学研究所,有一台计算机可以帮助解决问题。
问题以每小时 "Landa" 的强度 "Landa" 泊松过程到达计算机。
解决每个问题的时间可以看作参数为 "mu" 的指数分布。
在我们的世界中,我们有四种不同的状态。 S = (0,1,2,3)
状态 0 = 0 问题已到达计算机
状态 1 = 计算机正在解决 1 个问题
状态 2 = 计算机正在解决 1 个问题 + 队列中的 1 个问题。
状态 3 = 计算机正在解决 1 个问题 + 队列中的 2 个问题。
如果我们处于状态 3 时出现问题,发件人会收到错误消息并稍后重试。该机构已决定最多 5% 的发件人应该收到此错误消息。
为了决定谁有权访问计算机,我们提出了 3 种不同的建议。
- 只允许教授发题(Landa = 2, Mu = 10)
- 请教授和学生提问(Landa = 6, Mu = 10)
- 大家可以提问(Landa =10, Mu = 10)
我们应该调查这 3 个提案中有哪些提案没有超过 5% 的时间填满计算机。
我有两件事需要帮助
第一件事: 为了解决这个问题,我得到了这种代码结构(下面的代码)。我需要帮助的是,如果有人可以向我简要解释以下代码段落的目的,我在其中写了“#?”。
所以我真正需要帮助的是解释部分代码。
第二件事: 在我写了“...”的两个地方,我需要帮助来填写一些代码。
bd_process <- function(lambda, mu, initial_state = 0, steps = 100) {
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
}
#?
time_to_transition <- ...
#?
if (...) {
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) #WHAT DOE THIS VECTOR CONSIST OF?
}
list(time = time, state = state)
}
编写代码时似乎隐含假设到达间隔和服务分布是无记忆的,即指数分布或几何分布。如果没有无记忆,通过将速率设置为零来关闭处理是无效的。
有了无记忆的属性,你可以把time_to_transition
算作superposition of the two Poisson processes, and determine whether it was an arrival or a departure by randomizing proportional to the ratio of one of the rates to the combined rate。将其中一个速率归零也是有效的,因为当你取消归零时,由于无记忆 属性.