本文中我在R中构造一个简单的M / M / 1队列的离散事件模拟 。最近我们被客户要求撰写关于随机服务的研究报告,包括一些图形和统计输出。
像往常一样,我们从模拟及其检测所需的变量 开始。
-
-
- t.end <- 10^5 # 模拟的持续时间
- t.clock <- 0 # 模拟时间
- Ta <- 1.3333 # 抵达间隔期
- Ts <- 1.0000 # 服务期
- t1 <- 0 # 下一次到达的时间
- t2 <- t.end # 下一次出发的时间
- tn <- t.clock # 最后事件时间的临时变量
- tb <- 0 # 最后一次繁忙时间开始的临时变量
- n <- 0 # 系统中的数量
- s <- 0 # 累积数量-时间乘积
- b <- 0 # 总忙碌时间
- c <- 0 # 总完成数
- qc <- 0 # 绘制瞬时q大小
- tc <- 0 # 绘制时间延迟图
- plotSamples <- 100
- set.seed(1)
-
接下来,我们需要编写R代码以对进入队列和从队列离开进行实际的M / M / 1模拟。
-
- while (t.clock < t.end) {
- if(t1 < t2) { # 到达事件
- t.clock <- t1
- s <- s + n * (t.clock - tn) # 队列中的delta时间加权数
-
- ...
-
- else {
- t2 <- t.end
- b <- b + t.clock - tb
- }
- }