分享

用R语言模拟M/M/1随机服务排队系统

 拓端数据 2020-03-18

原文链接: http:///?p=8199

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

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

<- 10^5 # duration of sim\nt.clock <- 0 # sim time\nTa <- 1.3333 # interarrival period\nTs <- 1.0000 # service period\nt1 <- 0 # time for next arrival\nt2 <- t.end # time for next departure\ntn <- t.clock # tmp var for last event time\ntb <- 0 # tmp var for last busy-time start\nn <- 0 # number in system\ns <- 0 # cumulative number-time product\nb <- 0 # total busy time\nc <- 0 # total completions\nqc <- 0 # plot instantaneous q size\ntc <- 0 # plot time delta\nplotSamples <- 100\nset.seed(1) ","classes":{"has":1}}" data-cke-widget-upcasted="1" data-cke-widget-keep-attr="0" data-widget="codeSnippet"> 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模拟。

仿真循环
 

< t.end) {\n if (t1 < t2) { # arrival event\n t.clock <- t1\n s <- s + n * (t.clock - tn) # delta time-weighted number in queue\n \n...\n\n else { \n t2 <- t.end\n b <- b + t.clock - tb\n }\n } \n}","classes":{"has":1}}" data-cke-widget-upcasted="1" data-cke-widget-keep-attr="0" data-widget="codeSnippet">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个时间步长内达到了稳态。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约