javaee论坛

普通会员

225648

帖子

355

回复

369

积分

楼主
发表于 2019-11-03 09:08:57 | 查看: 100 | 回复: 0

 

M/M/1系统

该系统的基本参数::

使用M/M/1系统进行仿真非常简单。 

lambda<-2mu<-4rho<-lambda/mu#=2/4..

例如,可以快速可视化随时间变化的资源使用情况。在下面,我们可以看到仿真如何收敛到系统中理论上的平均客户数。

#Theoreticalvaluemm1.N<-rho/(1-rho)graph+geom_hline(yintercept=mm1.N)

 

例如,还可以通过使用参数items和来可视化各个元素的瞬时steps。

 

我们可以获取系统中每个客户花费的时间,并将平均值与理论表达式进行比较。

##[1]0.5##[1]0.5012594

看来它与理论值非常吻合。 

 并行化的缺点是,当每个线程完成时,我们会丢失基础的C++对象。让我们执行一个简单的测试:

library(dplyr)t_system<-get_mon_arrivals(envs)%>%mutate(t_system=end_time-start_time)%>%group_by(replication)%>%summarise(mean=mean(t_system))t.test(t_system$mean)####OneSamplet-test####data:t_system$mean##t=348.23,df=999,p-value<2.2e-16##alternativehypothesis:truemeanisnotequalto0##95percentconfidenceinterval:##0.49573280.5013516##sampleestimates:##meanofx##0.4985422

 最后,M/M/1满足了系统中所用时间的分布,而该分布又是具有平均值的指数随机变量。

qqplot(mm1.t_system,rexp(length(mm1.t_system),1/mm1.T))abline(0,1,lty=2,col="red")

 

 

M/M/c/k系统

M/M/c/k系统保持指数到达和服务时间,但通常具有不止一台服务器和有限的队列,这通常更现实。例如,路由器可能有多个处理器来处理数据包,而输入/输出队列必定是有限的。

这是M/M/2/3系统(2个服务器,队列中1个位置)的模拟。 

lambda<-2mu<-4mm23.trajectory<-create_trajectory()%>%...

在这种情况下,队列已满时会有拒绝。

##rejection_rate##10.02009804

尽管如此,与M/M/1情况一样,系统中花费的时间仍遵循指数随机变量,但平均值有所下降。

#ComparisonwithM/M/1timesqqplot(mm1.t_system,mm23.t_system)abline(0,1,lty=2,col="red")

 


您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017