Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 出生死亡代码_R_Simulation_Markov_Poison Queue - Fatal编程技术网

R 出生死亡代码

R 出生死亡代码,r,simulation,markov,poison-queue,R,Simulation,Markov,Poison Queue,我的问题: 在一个实验数学研究所,有一台计算机可以帮助解决问题 问题以泊松过程到达计算机,强度为每小时“兰达” 解决每个问题的时间可以看作是一个带有参数“mu”的指数分布 在我们的世界里,我们有四个不同的国家。S=(0,1,2,3) 状态0=计算机上有0个问题 状态1=计算机正在解决1个问题 状态2=计算机正在解决队列中的1个问题+1 状态3=计算机正在解决队列中的1个问题+2个问题 当我们处于状态3时,如果出现问题,发送者将收到错误消息并稍后重试。该机构已决定最多5%的发件人应收到此错误消息

我的问题:

在一个实验数学研究所,有一台计算机可以帮助解决问题

问题以泊松过程到达计算机,强度为每小时“兰达”

解决每个问题的时间可以看作是一个带有参数“mu”的指数分布

在我们的世界里,我们有四个不同的国家。S=(0,1,2,3)

状态0=计算机上有0个问题

状态1=计算机正在解决1个问题

状态2=计算机正在解决队列中的1个问题+1

状态3=计算机正在解决队列中的1个问题+2个问题

当我们处于状态3时,如果出现问题,发送者将收到错误消息并稍后重试。该机构已决定最多5%的发件人应收到此错误消息

为了决定谁应该使用计算机,我们提出了三个不同的建议

  • 只有教授可以发问(Landa=2,Mu=10)
  • 教授和学生可以发送问题(Landa=6,Mu=10)
  • 任何人都可以发送问题(Landa=10,Mu=10)
  • 我们应该调查这三个方案中,有哪些在计算机中的填充率不超过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)
    }
    

    bd_过程编写代码时,似乎隐含了一个假设,即到达间隔和服务分布是无记忆的,即指数分布或几何分布。如果没有无记忆性,通过将速率设置为零来关闭处理是无效的


    使用无记忆属性,您可以算出
    时间到时间的转换
    ,并通过与时间成比例的随机化来确定它是到达还是离开。将其中一个速率归零也是有效的,因为当你将其解零时,速率为零的经过时间并不重要,因为它是无记忆的。你能简化成一个简单的回答吗?你好像复制/粘贴了一个问题陈述。你明白这个问题吗?您是否了解
    bd\u过程
    功能的目标?最后,它返回
    tid
    state
    ,但在更新
    state
    时有一个问号,并写“
    #这个向量由什么组成?
    ”。不了解回报让我觉得你不了解功能的目标也许你也可以解释一下你所知道的。例如,您对行
    time\u有问号,现在这段代码不是我写的。它是给我的,我正在努力理解它的结构。我所理解的是:循环中的第一个段落指出,当我们处于状态3时,不能再把更多的东西放在队列中。循环中的第二段说,当我们处于0状态时,没有问题得到解决。在任何其他状态下,它们都将以μ的强度求解。我不明白这一点下的代码。所以时间到时间的转换和向下转换是我不理解的。在if(…){state\u现在你好,pjs。我认为时间到时间的转换是离开一个状态的时间,它可以被看作Exp(mu)+Exp(lambda)。还有什么可以编码的吗?当我把它写进去时,我得到了“Exp”找不到。@PeterNiklas假设您在编写
    Exp(mu)
    时表示以速率mu指数分布,则下一个转换不是
    Exp(mu)+Exp(lambda)
    。它位于两个转换中的较小值--
    min(Exp(mu),Exp(lambda))
    ,它具有分布
    Exp(mu+lambda)