zoukankan      html  css  js  c++  java
  • 用R语言代写模拟M / M / 1随机服务排队系统

    原文链接: http://tecdat.cn/?p=8199

    本文中我在R中构造一个简单的M / M / 1队列的离散事件模拟 。
     

    模拟变量
    像往常一样,我们从模拟及其检测所需的变量 开始。

     
    t.end   <- 10^5 # duration of sim
    t.clock <- 0    # sim time
    Ta <- 1.3333    # interarrival period
    Ts <- 1.0000    # service period
    t1 <- 0         # time for next arrival
    t2 <- t.end     # time for next departure
    tn <- t.clock   # tmp var for last event time
    tb <- 0         # tmp var for last busy-time start
    n <- 0          # number in system
    s <- 0          # cumulative number-time product
    b <- 0          # total busy time
    c <- 0          # total completions
    qc <- 0         # plot instantaneous q size
    tc <- 0         # plot time delta
    plotSamples <- 100
    set.seed(1) 

    接下来,我们需要编写R代码以对进入队列和从队列离开进行实际的M / M / 1模拟。

    仿真循环
     

    while (t.clock < t.end) {
        if (t1 < t2) {      # arrival event
            t.clock <- t1
            s <- s + n * (t.clock - tn)  # delta time-weighted number in queue
         
    ...
    
            else { 
                t2 <- t.end
                b <- b + t.clock - tb
            }
        }   
    }

    检测指标
    在这里,我们 检测数据以形成一些众所周知的性能指标。 

    队列长度
    这是瞬时队列长度- 平均负载数据的曲线图。这就是排队波动的样子。 

    显示为红色虚线的框具有与阶梯曲线下方相同的面积。 

    PDQ模型
    为了进行分析比较,我们还使用 PDQ-R模型。

    是的,这几行代码与上面带工具的仿真代码等效,并且可以保证处于稳定状态。即使在R中运行PDQ本质上也是瞬时的。模拟将花费更长的时间, 

    结果
    最后,我们可以将模拟的M / M / 1队列与相应的PDQ结果进行比较。像往常一样,最好将它们分解为输入和输出。

    1. 输入:
      Tsim:1.00e + 05 
      Ta:1.3333,Ts:1.0000#次
      Ar:0.7500,Sr:1.0000#
    2. 输出:
      Usim:0.7477,Updq:0.75 
      Xsim:0.7495,Xpdq:0.75
      Rsim:4.0316,Rpdq:4.00
      Qsim:3.0219,Qpdq:3.00

     我们可以得出结论,仿真在指定的10 5个时间步长内达到了稳态。

    如果您有任何疑问,请在下面发表评论。 

     
  • 相关阅读:
    js面向对象实现Tab切换
    js中的面向对象基础1
    js正则表达式
    Ajax的基础使用
    JS完美运动框架
    JS实现链式运动
    js实现多物体运动框架
    js实现多物体运动
    JS运动应用
    JavaScript中的高阶函数
  • 原文地址:https://www.cnblogs.com/tecdat/p/11763531.html
Copyright © 2011-2022 走看看