模拟:
MD1Queue 是 Queue 客户端 ,你可能使用它来验证这类数学结果。他是基于事件模拟的简单示例:我们产生的事件发生在特定时间,为了事件相应的调整我们的数据结构,模拟当事件出现时,发生了什么。在M/D/1队列中,有两类事件:不是有顾客到达,就是提供顾客服务,因此我们需要维护两个变量:
· nextService 是下一个服务的时间
· nextArrival 是下一个到达的时间
为了模拟到达事件,在队列中插入double值,nextvalArrival是到达时间;为了模拟服务,中队列中删除值,计算等待时间(离开队列时间减去服务时间nextService是到达时间)并将等待时间数据点加到直方图上(直方图程序Histogram)。在多次试验之后,结果的形状是M/D/1排队系统的特性。从实用观点来看,这个过程中的一个最重要特征是,通过使用不同的λ和μ值运行MD1Queue,你会发现当服务率逼近到达率时,平均等待时间和队列长度可能剧增。当服务费率很高时,直方图有一个可见的尾部,此时随着等待时间的减少,顾客需要等待时间的频率减少到几乎可以忽略不计。但是,当服务费率逼近到达率时,直方图的尾部在最多值处伸展,因此至少能显示顾客最长等待时间频率。
view plaincopy to clipboardprint?
01./*************************************************************************
02. * Compilation: javac MD1Queue.java
03. * Execution: java MD1Queue lambda mu
04. * Dependencies: Queue.java
05. *
06. * % java MD1Queue .167 .25
07. *
08. * % java MD1Queue .167 .22
09. *
10. *************************************************************************/
11.
12.public class MD1Queue {
13.
14. public static void main(String[]