美文网首页
统计计算第二次作业(排队论)

统计计算第二次作业(排队论)

作者: hopless | 来源:发表于2016-09-24 11:58 被阅读55次

    代码部分

    arrive<-rexp(2000,0.5)      #生成服从指数分布的随机变量,表示客人到达的间隔时间
    arritime<-cumsum(arrive)    #通过累加,获得客人到达的时间点
    stat1<-rexp(2000,0.25)      #生成服务台1的服务时间间隔
    stat2<-rexp(2000,0.25)      #生成服务台2的服务时间间隔
    get_ser<-c()                #记录每个客户开始服务时间
    end_ser<-c()                #记录每个客户结束服务时间
    i=1;j=1
    A_opentime <-0              # A_opeantime表示服务台1允许开始服务时间,也就是上一位客人结束服务的时间
    B_opentime<-0.001           # B_opeantime表示服务台2允许开始服务时间,也就是上一位客人结束服务的时间
    for(k in 1:2000){
      temp <-arritime[k]
      if(A_opentime < B_opentime){   #如果服务台1比服务台2提前结束上一轮服务,则第k个客户的服务由服务台1进行(为服务台1服务的第i个人)
        if(temp > A_opentime)        #比较客户到达时间与服务台1开始服务时间,若第k个客户尚未到达,服务台1空闲,更新
          A_opentime<-temp           # 服务台1的开始服务时间为第k个客户到达时间
        
        get_ser[k]=A_opentime       #讲第k个客户的开始服务时间 =服务台1的opentime
        end_ser[k]=get_ser[k]+stat1[i]    #讲第k个客户的结束服务时间点 =开始服务时间 +服务台1本次花费时间(从stat1中的第i个)
        A_opentime=end_ser[k]            #更新服务台1的下一次开放时间为第k个客户结束服务时间
        i=i+1                             #更新i到i+1,方便提取服务台1为服务下一个客户花费时间的数据  
      }
      else {
        if(temp >B_opentime)
          B_opentime<-temp  
        
        get_ser[k]=B_opentime
        end_ser[k]=get_ser[k]+stat2[j]
        B_opentime=end_ser[k]
        j=j+1
      }
    }
    #将所有客户的到达时间,接受服务时间 ,结束服务时间合并起来
    A=data.frame(arritime=arritime,get_ser=get_ser,end_ser =end_ser)   
    waiting=A[,2]-A[,1]   #计算每个人的等待时间
    summary(waiting)
    
    #计算平均队伍长度
    line=c(0)
    for(i in 2:2000){
      temp2=arritime[i]
      line<-c(line,i-table(get_ser< temp2)[2])
    }
    summary(line)
    

    模拟结果

    当服务间隔时间的期望是3,到达时间间隔的期望是1

    #等待时间
    > summary(waiting)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
        0.0   264.2   498.3   486.4   725.0   957.1 
    > #计算平均队伍长度
    > summary(line)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
       0.00   53.75  110.00  131.50  214.20  299.00 
    

    当服务间隔时间的期望是3,到达时间间隔的期望是2

    #等待时间
    > summary(waiting)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      0.000   0.000   1.493   4.468   6.412  32.010 
    > #计算平均队伍长度
    > summary(line)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      0.000   1.000   2.000   4.094   6.000  19.000 
    

    当服务间隔时间的期望是3,到达时间间隔的期望是3

    #等待时间
    > summary(waiting)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
     0.0000  0.0000  0.0000  1.1400  0.9547 15.2100 
    > #计算平均队伍长度
    > summary(line)
       Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      0.000   1.000   1.000   1.325   1.000  10.000 
      
    

    相关文章

      网友评论

          本文标题:统计计算第二次作业(排队论)

          本文链接:https://www.haomeiwen.com/subject/hesxyttx.html