【发布时间】:2016-11-16 09:59:06
【问题描述】:
我的问题:
在一个实验数学研究所,有一台可以帮助解决问题的计算机。
问题以每小时“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% 的时间填满计算机。
我有两件事需要帮助
第一件事: 为了解决这个问题,我得到了这种代码结构(下面的代码)。我需要帮助的是,如果有人可以向我简要解释我写“#?”的以下代码段落的目的。
所以我真正需要帮助的是 some1 来解释部分代码。
第二件事: 在我写过“...”的两个地方,我需要帮助来填写一些代码。
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)
}
【问题讨论】:
-
哇,这真是个问题。能否请您减少为minimal reproducible example 以便于回答?
-
您似乎复制/粘贴了问题陈述。你明白这个问题吗?你了解
bd_process函数的目标吗?最后返回tid和state,但是你对state的更新有个问号,写“#WHAT DOE THIS VECTOR CONSIST OF?”。不理解返回让我觉得你不理解函数的目标 -
也许你也可以解释一下你所知道的。例如,您对
time_now <- time_now + time_to_transition行有问号。这是一个简单的补充。它将time_now的当前值添加到time_to_transition的当前值并调用结果time_now,从而更新time_now变量。这是您需要的解释级别吗? -
这段代码不是我写的。它是给我的,我正试图了解它的结构。我的理解是:循环中的第一个段落指出,当我们处于状态 3 时,不能再放入队列中。循环中的第二段表示,当我们处于状态 0 时,没有解决任何问题。而在任何其他状态下,它们将以亩的强度解决。我不明白这一点下的代码。所以 Time_to_transition 和 down 是我不明白的。
-
At if (...) { state_now
标签: r simulation markov poison-queue